{
    "id": "a8cd9c443d245fe513d6650634b60f93",
    "_format": "hh-sol-build-info-1",
    "solcVersion": "0.8.9",
    "solcLongVersion": "0.8.9+commit.e5eed63a",
    "input": {
        "language": "Solidity",
        "sources": {
            "contracts/external/polygon/lib/Merkle.sol": {
                "content": "// SPDX-License-Identifier: MIT\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\n// except bumping version from 0.7.3 --> 0.8\npragma solidity ^0.8.0;\n\nlibrary Merkle {\n    function checkMembership(\n        bytes32 leaf,\n        uint256 index,\n        bytes32 rootHash,\n        bytes memory proof\n    ) internal pure returns (bool) {\n        require(proof.length % 32 == 0, \"Invalid proof length\");\n        uint256 proofHeight = proof.length / 32;\n        // Proof of size n means, height of the tree is n+1.\n        // In a tree of height n+1, max #leafs possible is 2 ^ n\n        require(index < 2**proofHeight, \"Leaf index is too big\");\n\n        bytes32 proofElement;\n        bytes32 computedHash = leaf;\n        for (uint256 i = 32; i <= proof.length; i += 32) {\n            assembly {\n                proofElement := mload(add(proof, i))\n            }\n\n            if (index % 2 == 0) {\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\n            } else {\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\n            }\n\n            index = index / 2;\n        }\n        return computedHash == rootHash;\n    }\n}\n"
            },
            "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol": {
                "content": "// SPDX-License-Identifier: MIT\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\n// except bumping version from 0.7.3 --> 0.8\npragma solidity ^0.8.0;\n\nimport \"../lib/RLPReader.sol\";\nimport \"../lib/MerklePatriciaProof.sol\";\nimport \"../lib/Merkle.sol\";\n\ninterface IFxStateSender {\n    function sendMessageToChild(address _receiver, bytes calldata _data) external;\n}\n\ncontract ICheckpointManager {\n    struct HeaderBlock {\n        bytes32 root;\n        uint256 start;\n        uint256 end;\n        uint256 createdAt;\n        address proposer;\n    }\n\n    /**\n     * @notice mapping of checkpoint header numbers to block details\n     * @dev These checkpoints are submited by plasma contracts\n     */\n    mapping(uint256 => HeaderBlock) public headerBlocks;\n}\n\nabstract contract FxBaseRootTunnel {\n    using RLPReader for bytes;\n    using RLPReader for RLPReader.RLPItem;\n    using Merkle for bytes32;\n\n    // keccak256(MessageSent(bytes))\n    bytes32 public constant SEND_MESSAGE_EVENT_SIG = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036;\n\n    // state sender contract\n    IFxStateSender public fxRoot;\n    // root chain manager\n    ICheckpointManager public checkpointManager;\n    // child tunnel contract which receives and sends messages\n    address public fxChildTunnel;\n\n    // storage to avoid duplicate exits\n    mapping(bytes32 => bool) public processedExits;\n\n    constructor(address _checkpointManager, address _fxRoot) {\n        checkpointManager = ICheckpointManager(_checkpointManager);\n        fxRoot = IFxStateSender(_fxRoot);\n    }\n\n    // set fxChildTunnel if not set already\n    function setFxChildTunnel(address _fxChildTunnel) public {\n        require(fxChildTunnel == address(0x0), \"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\");\n        fxChildTunnel = _fxChildTunnel;\n    }\n\n    /**\n     * @notice Send bytes message to Child Tunnel\n     * @param message bytes message that will be sent to Child Tunnel\n     * some message examples -\n     *   abi.encode(tokenId);\n     *   abi.encode(tokenId, tokenMetadata);\n     *   abi.encode(messageType, messageData);\n     */\n    function _sendMessageToChild(bytes memory message) internal {\n        fxRoot.sendMessageToChild(fxChildTunnel, message);\n    }\n\n    function _validateAndExtractMessage(bytes memory inputData) internal returns (bytes memory) {\n        RLPReader.RLPItem[] memory inputDataRLPList = inputData.toRlpItem().toList();\n\n        // checking if exit has already been processed\n        // unique exit is identified using hash of (blockNumber, branchMask, receiptLogIndex)\n        bytes32 exitHash =\n            keccak256(\n                abi.encodePacked(\n                    inputDataRLPList[2].toUint(), // blockNumber\n                    // first 2 nibbles are dropped while generating nibble array\n                    // this allows branch masks that are valid but bypass exitHash check (changing first 2 nibbles only)\n                    // so converting to nibble array and then hashing it\n                    MerklePatriciaProof._getNibbleArray(inputDataRLPList[8].toBytes()), // branchMask\n                    inputDataRLPList[9].toUint() // receiptLogIndex\n                )\n            );\n        require(processedExits[exitHash] == false, \"FxRootTunnel: EXIT_ALREADY_PROCESSED\");\n        processedExits[exitHash] = true;\n\n        RLPReader.RLPItem[] memory receiptRLPList = inputDataRLPList[6].toBytes().toRlpItem().toList();\n        RLPReader.RLPItem memory logRLP =\n            receiptRLPList[3].toList()[\n                inputDataRLPList[9].toUint() // receiptLogIndex\n            ];\n\n        RLPReader.RLPItem[] memory logRLPList = logRLP.toList();\n\n        // check child tunnel\n        require(fxChildTunnel == RLPReader.toAddress(logRLPList[0]), \"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\");\n\n        // verify receipt inclusion\n        require(\n            MerklePatriciaProof.verify(\n                inputDataRLPList[6].toBytes(), // receipt\n                inputDataRLPList[8].toBytes(), // branchMask\n                inputDataRLPList[7].toBytes(), // receiptProof\n                bytes32(inputDataRLPList[5].toUint()) // receiptRoot\n            ),\n            \"FxRootTunnel: INVALID_RECEIPT_PROOF\"\n        );\n\n        // verify checkpoint inclusion\n        _checkBlockMembershipInCheckpoint(\n            inputDataRLPList[2].toUint(), // blockNumber\n            inputDataRLPList[3].toUint(), // blockTime\n            bytes32(inputDataRLPList[4].toUint()), // txRoot\n            bytes32(inputDataRLPList[5].toUint()), // receiptRoot\n            inputDataRLPList[0].toUint(), // headerNumber\n            inputDataRLPList[1].toBytes() // blockProof\n        );\n\n        RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics\n\n        require(\n            bytes32(logTopicRLPList[0].toUint()) == SEND_MESSAGE_EVENT_SIG, // topic0 is event sig\n            \"FxRootTunnel: INVALID_SIGNATURE\"\n        );\n\n        // received message data\n        bytes memory receivedData = logRLPList[2].toBytes();\n        bytes memory message = abi.decode(receivedData, (bytes)); // event decodes params again, so decoding bytes to get message\n        return message;\n    }\n\n    function _checkBlockMembershipInCheckpoint(\n        uint256 blockNumber,\n        uint256 blockTime,\n        bytes32 txRoot,\n        bytes32 receiptRoot,\n        uint256 headerNumber,\n        bytes memory blockProof\n    ) private view returns (uint256) {\n        (bytes32 headerRoot, uint256 startBlock, , uint256 createdAt, ) = checkpointManager.headerBlocks(headerNumber);\n\n        require(\n            keccak256(abi.encodePacked(blockNumber, blockTime, txRoot, receiptRoot)).checkMembership(\n                blockNumber - startBlock,\n                headerRoot,\n                blockProof\n            ),\n            \"FxRootTunnel: INVALID_HEADER\"\n        );\n        return createdAt;\n    }\n\n    /**\n     * @notice receive message from  L2 to L1, validated by proof\n     * @dev This function verifies if the transaction actually happened on child chain\n     *\n     * @param inputData RLP encoded data of the reference tx containing following list of fields\n     *  0 - headerNumber - Checkpoint header block number containing the reference tx\n     *  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root\n     *  2 - blockNumber - Block number containing the reference tx on child chain\n     *  3 - blockTime - Reference tx block time\n     *  4 - txRoot - Transactions root of block\n     *  5 - receiptRoot - Receipts root of block\n     *  6 - receipt - Receipt of the reference transaction\n     *  7 - receiptProof - Merkle proof of the reference receipt\n     *  8 - branchMask - 32 bits denoting the path of receipt in merkle tree\n     *  9 - receiptLogIndex - Log Index to read from the receipt\n     */\n    function receiveMessage(bytes memory inputData) public virtual {\n        bytes memory message = _validateAndExtractMessage(inputData);\n        _processMessageFromChild(message);\n    }\n\n    /**\n     * @notice Process message received from Child Tunnel\n     * @dev function needs to be implemented to handle message as per requirement\n     * This is called by onStateReceive function.\n     * Since it is called via a system call, any event will not be emitted during its execution.\n     * @param message bytes message that was sent from Child Tunnel\n     */\n    function _processMessageFromChild(bytes memory message) internal virtual;\n}\n"
            },
            "contracts/external/polygon/lib/RLPReader.sol": {
                "content": "// SPDX-License-Identifier: MIT\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\n// There are two modifications such that this contract compiles with Solidity v8:\n// - Line 86: cannot convert directly from uint256 --> address\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\n//   statement\n// More details on Solidity v0.8.0 breaking changes here:\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\npragma solidity ^0.8.0;\n\nlibrary RLPReader {\n    uint8 constant STRING_SHORT_START = 0x80;\n    uint8 constant STRING_LONG_START = 0xb8;\n    uint8 constant LIST_SHORT_START = 0xc0;\n    uint8 constant LIST_LONG_START = 0xf8;\n    uint8 constant WORD_SIZE = 32;\n\n    struct RLPItem {\n        uint256 len;\n        uint256 memPtr;\n    }\n\n    /*\n     * @param item RLP encoded bytes\n     */\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\n        require(item.length > 0, \"RLPReader: INVALID_BYTES_LENGTH\");\n        uint256 memPtr;\n        assembly {\n            memPtr := add(item, 0x20)\n        }\n\n        return RLPItem(item.length, memPtr);\n    }\n\n    /*\n     * @param item RLP encoded list in bytes\n     */\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\n        require(isList(item), \"RLPReader: ITEM_NOT_LIST\");\n\n        uint256 items = numItems(item);\n        RLPItem[] memory result = new RLPItem[](items);\n        uint256 listLength = _itemLength(item.memPtr);\n        require(listLength == item.len, \"RLPReader: LIST_DECODED_LENGTH_MISMATCH\");\n\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\n        uint256 dataLen;\n        for (uint256 i = 0; i < items; i++) {\n            dataLen = _itemLength(memPtr);\n            result[i] = RLPItem(dataLen, memPtr);\n            memPtr = memPtr + dataLen;\n        }\n\n        return result;\n    }\n\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\n    function isList(RLPItem memory item) internal pure returns (bool) {\n        uint8 byte0;\n        uint256 memPtr = item.memPtr;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < LIST_SHORT_START) return false;\n        return true;\n    }\n\n    /** RLPItem conversions into data types **/\n\n    // @returns raw rlp encoding in bytes\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\n        bytes memory result = new bytes(item.len);\n\n        uint256 ptr;\n        assembly {\n            ptr := add(0x20, result)\n        }\n\n        copy(item.memPtr, ptr, item.len);\n        return result;\n    }\n\n    function toAddress(RLPItem memory item) internal pure returns (address) {\n        require(!isList(item), \"RLPReader: DECODING_LIST_AS_ADDRESS\");\n        // 1 byte for the length prefix\n        require(item.len == 21, \"RLPReader: INVALID_ADDRESS_LENGTH\");\n\n        return address(uint160(toUint(item)));\n    }\n\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\n        require(!isList(item), \"RLPReader: DECODING_LIST_AS_UINT\");\n        require(item.len <= 33, \"RLPReader: INVALID_UINT_LENGTH\");\n\n        uint256 itemLength = _itemLength(item.memPtr);\n        require(itemLength == item.len, \"RLPReader: UINT_DECODED_LENGTH_MISMATCH\");\n\n        uint256 offset = _payloadOffset(item.memPtr);\n        uint256 len = item.len - offset;\n        uint256 result;\n        uint256 memPtr = item.memPtr + offset;\n        assembly {\n            result := mload(memPtr)\n\n            // shfit to the correct location if neccesary\n            if lt(len, 32) {\n                result := div(result, exp(256, sub(32, len)))\n            }\n        }\n\n        return result;\n    }\n\n    // enforces 32 byte length\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\n        uint256 itemLength = _itemLength(item.memPtr);\n        require(itemLength == item.len, \"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\");\n        // one byte prefix\n        require(item.len == 33, \"RLPReader: INVALID_UINT_STRICT_LENGTH\");\n\n        uint256 result;\n        uint256 memPtr = item.memPtr + 1;\n        assembly {\n            result := mload(memPtr)\n        }\n\n        return result;\n    }\n\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\n        uint256 listLength = _itemLength(item.memPtr);\n        require(listLength == item.len, \"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\");\n        uint256 offset = _payloadOffset(item.memPtr);\n\n        uint256 len = item.len - offset; // data length\n        bytes memory result = new bytes(len);\n\n        uint256 destPtr;\n        assembly {\n            destPtr := add(0x20, result)\n        }\n\n        copy(item.memPtr + offset, destPtr, len);\n        return result;\n    }\n\n    /*\n     * Private Helpers\n     */\n\n    // @return number of payload items inside an encoded list.\n    function numItems(RLPItem memory item) private pure returns (uint256) {\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\n        // require(isList(item), \"RLPReader: NUM_ITEMS_NOT_LIST\");\n\n        uint256 count = 0;\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\n        uint256 endPtr = item.memPtr + item.len;\n        while (currPtr < endPtr) {\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\n            require(currPtr <= endPtr, \"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\");\n            count++;\n        }\n\n        return count;\n    }\n\n    // @return entire rlp item byte length\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\n        uint256 itemLen;\n        uint256 byte0;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\n        else if (byte0 < LIST_SHORT_START) {\n            assembly {\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\n                memPtr := add(memPtr, 1) // skip over the first byte\n\n                /* 32 byte word size */\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\n                itemLen := add(dataLen, add(byteLen, 1))\n            }\n        } else if (byte0 < LIST_LONG_START) {\n            itemLen = byte0 - LIST_SHORT_START + 1;\n        } else {\n            assembly {\n                let byteLen := sub(byte0, 0xf7)\n                memPtr := add(memPtr, 1)\n\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\n                itemLen := add(dataLen, add(byteLen, 1))\n            }\n        }\n\n        return itemLen;\n    }\n\n    // @return number of bytes until the data\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\n        uint256 byte0;\n        assembly {\n            byte0 := byte(0, mload(memPtr))\n        }\n\n        if (byte0 < STRING_SHORT_START) return 0;\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\n        else if (byte0 < LIST_SHORT_START)\n            // being explicit\n            return byte0 - (STRING_LONG_START - 1) + 1;\n        else return byte0 - (LIST_LONG_START - 1) + 1;\n    }\n\n    /*\n     * @param src Pointer to source\n     * @param dest Pointer to destination\n     * @param len Amount of memory to copy from the source\n     */\n    function copy(\n        uint256 src,\n        uint256 dest,\n        uint256 len\n    ) private pure {\n        if (len == 0) return;\n\n        // copy as many word sizes as possible\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\n            assembly {\n                mstore(dest, mload(src))\n            }\n\n            src += WORD_SIZE;\n            dest += WORD_SIZE;\n        }\n\n        unchecked {\n            // left over bytes. Mask is used to remove unwanted bytes from the word\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\n            assembly {\n                let srcpart := and(mload(src), not(mask)) // zero out src\n                let destpart := and(mload(dest), mask) // retrieve the bytes\n                mstore(dest, or(destpart, srcpart))\n            }\n        }\n    }\n}\n"
            },
            "contracts/external/polygon/lib/MerklePatriciaProof.sol": {
                "content": "// SPDX-License-Identifier: MIT\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\n// except bumping version from 0.7.3 --> 0.8\npragma solidity ^0.8.0;\n\nimport { RLPReader } from \"./RLPReader.sol\";\n\nlibrary MerklePatriciaProof {\n    /*\n     * @dev Verifies a merkle patricia proof.\n     * @param value The terminating value in the trie.\n     * @param encodedPath The path in the trie leading to value.\n     * @param rlpParentNodes The rlp encoded stack of nodes.\n     * @param root The root hash of the trie.\n     * @return The boolean validity of the proof.\n     */\n    function verify(\n        bytes memory value,\n        bytes memory encodedPath,\n        bytes memory rlpParentNodes,\n        bytes32 root\n    ) internal pure returns (bool proofValidity) {\n        RLPReader.RLPItem memory item = RLPReader.toRlpItem(rlpParentNodes);\n        RLPReader.RLPItem[] memory parentNodes = RLPReader.toList(item);\n\n        bytes memory currentNode;\n        RLPReader.RLPItem[] memory currentNodeList;\n\n        bytes32 nodeKey = root;\n        uint256 pathPtr = 0;\n\n        bytes memory path = _getNibbleArray(encodedPath);\n        if (path.length == 0) {\n            return false;\n        }\n\n        for (uint256 i = 0; i < parentNodes.length; i++) {\n            if (pathPtr > path.length) {\n                return false;\n            }\n\n            currentNode = RLPReader.toRlpBytes(parentNodes[i]);\n            if (nodeKey != keccak256(currentNode)) {\n                return false;\n            }\n            currentNodeList = RLPReader.toList(parentNodes[i]);\n\n            if (currentNodeList.length == 17) {\n                if (pathPtr == path.length) {\n                    if (keccak256(RLPReader.toBytes(currentNodeList[16])) == keccak256(value)) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                }\n\n                uint8 nextPathNibble = uint8(path[pathPtr]);\n                if (nextPathNibble > 16) {\n                    return false;\n                }\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[nextPathNibble]));\n                pathPtr += 1;\n            } else if (currentNodeList.length == 2) {\n                uint256 traversed = _nibblesToTraverse(RLPReader.toBytes(currentNodeList[0]), path, pathPtr);\n                if (pathPtr + traversed == path.length) {\n                    //leaf node\n                    if (keccak256(RLPReader.toBytes(currentNodeList[1])) == keccak256(value)) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                }\n\n                //extension node\n                if (traversed == 0) {\n                    return false;\n                }\n\n                pathPtr += traversed;\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[1]));\n            } else {\n                return false;\n            }\n        }\n    }\n\n    function _nibblesToTraverse(\n        bytes memory encodedPartialPath,\n        bytes memory path,\n        uint256 pathPtr\n    ) private pure returns (uint256) {\n        uint256 len = 0;\n        // encodedPartialPath has elements that are each two hex characters (1 byte), but partialPath\n        // and slicedPath have elements that are each one hex character (1 nibble)\n        bytes memory partialPath = _getNibbleArray(encodedPartialPath);\n        bytes memory slicedPath = new bytes(partialPath.length);\n\n        // pathPtr counts nibbles in path\n        // partialPath.length is a number of nibbles\n        for (uint256 i = pathPtr; i < pathPtr + partialPath.length; i++) {\n            bytes1 pathNibble = path[i];\n            slicedPath[i - pathPtr] = pathNibble;\n        }\n\n        if (keccak256(partialPath) == keccak256(slicedPath)) {\n            len = partialPath.length;\n        } else {\n            len = 0;\n        }\n        return len;\n    }\n\n    // bytes b must be hp encoded\n    function _getNibbleArray(bytes memory b) internal pure returns (bytes memory) {\n        bytes memory nibbles = \"\";\n        if (b.length > 0) {\n            uint8 offset;\n            uint8 hpNibble = uint8(_getNthNibbleOfBytes(0, b));\n            if (hpNibble == 1 || hpNibble == 3) {\n                nibbles = new bytes(b.length * 2 - 1);\n                bytes1 oddNibble = _getNthNibbleOfBytes(1, b);\n                nibbles[0] = oddNibble;\n                offset = 1;\n            } else {\n                nibbles = new bytes(b.length * 2 - 2);\n                offset = 0;\n            }\n\n            for (uint256 i = offset; i < nibbles.length; i++) {\n                nibbles[i] = _getNthNibbleOfBytes(i - offset + 2, b);\n            }\n        }\n        return nibbles;\n    }\n\n    function _getNthNibbleOfBytes(uint256 n, bytes memory str) private pure returns (bytes1) {\n        return bytes1(n % 2 == 0 ? uint8(str[n / 2]) / 0x10 : uint8(str[n / 2]) % 0x10);\n    }\n}\n"
            }
        },
        "settings": {
            "optimizer": {
                "enabled": true,
                "runs": 1000000
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "evm.bytecode",
                        "evm.deployedBytecode",
                        "evm.methodIdentifiers",
                        "metadata",
                        "devdoc",
                        "userdoc",
                        "storageLayout",
                        "evm.gasEstimates"
                    ],
                    "": [
                        "ast"
                    ]
                }
            },
            "metadata": {
                "useLiteralContent": true
            }
        }
    },
    "output": {
        "contracts": {
            "contracts/external/polygon/lib/Merkle.sol": {
                "Merkle": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b7e9f57ea246124f7f4feefa2d977a60de6ebd1cb9e68bacd9d5432b465809e64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH31 0x9F57EA246124F7F4FEEFA2D977A60DE6EBD1CB9E68BACD9D5432B465809E64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "205:1041:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;205:1041:0;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b7e9f57ea246124f7f4feefa2d977a60de6ebd1cb9e68bacd9d5432b465809e64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH31 0x9F57EA246124F7F4FEEFA2D977A60DE6EBD1CB9E68BACD9D5432B465809E64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "205:1041:0:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "checkMembership(bytes32,uint256,bytes32,bytes memory)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/lib/Merkle.sol\":\"Merkle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/Merkle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nlibrary Merkle {\\n    function checkMembership(\\n        bytes32 leaf,\\n        uint256 index,\\n        bytes32 rootHash,\\n        bytes memory proof\\n    ) internal pure returns (bool) {\\n        require(proof.length % 32 == 0, \\\"Invalid proof length\\\");\\n        uint256 proofHeight = proof.length / 32;\\n        // Proof of size n means, height of the tree is n+1.\\n        // In a tree of height n+1, max #leafs possible is 2 ^ n\\n        require(index < 2**proofHeight, \\\"Leaf index is too big\\\");\\n\\n        bytes32 proofElement;\\n        bytes32 computedHash = leaf;\\n        for (uint256 i = 32; i <= proof.length; i += 32) {\\n            assembly {\\n                proofElement := mload(add(proof, i))\\n            }\\n\\n            if (index % 2 == 0) {\\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\\n            } else {\\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\\n            }\\n\\n            index = index / 2;\\n        }\\n        return computedHash == rootHash;\\n    }\\n}\\n\",\"keccak256\":\"0xb4b25515352f860f14f2382ab898120218ccc3122458e621b102ce959f884b54\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/polygon/lib/MerklePatriciaProof.sol": {
                "MerklePatriciaProof": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220613bc6b991be819c9a9b9d89a0fc08acf4102a2eb7dda8f45590b8afa686e4f964736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x3BC6 0xB9 SWAP2 0xBE DUP2 SWAP13 SWAP11 SWAP12 SWAP14 DUP10 LOG0 0xFC ADDMOD 0xAC DELEGATECALL LT 0x2A 0x2E 0xB7 0xDD 0xA8 DELEGATECALL SSTORE SWAP1 0xB8 0xAF 0xA6 DUP7 0xE4 0xF9 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "251:4756:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:4756:1;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220613bc6b991be819c9a9b9d89a0fc08acf4102a2eb7dda8f45590b8afa686e4f964736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0x3BC6 0xB9 SWAP2 0xBE DUP2 SWAP13 SWAP11 SWAP12 SWAP14 DUP10 LOG0 0xFC ADDMOD 0xAC DELEGATECALL LT 0x2A 0x2E 0xB7 0xDD 0xA8 DELEGATECALL SSTORE SWAP1 0xB8 0xAF 0xA6 DUP7 0xE4 0xF9 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "251:4756:1:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "_getNibbleArray(bytes memory)": "infinite",
                                "_getNthNibbleOfBytes(uint256,bytes memory)": "infinite",
                                "_nibblesToTraverse(bytes memory,bytes memory,uint256)": "infinite",
                                "verify(bytes memory,bytes memory,bytes memory,bytes32)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/lib/MerklePatriciaProof.sol\":\"MerklePatriciaProof\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/MerklePatriciaProof.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport { RLPReader } from \\\"./RLPReader.sol\\\";\\n\\nlibrary MerklePatriciaProof {\\n    /*\\n     * @dev Verifies a merkle patricia proof.\\n     * @param value The terminating value in the trie.\\n     * @param encodedPath The path in the trie leading to value.\\n     * @param rlpParentNodes The rlp encoded stack of nodes.\\n     * @param root The root hash of the trie.\\n     * @return The boolean validity of the proof.\\n     */\\n    function verify(\\n        bytes memory value,\\n        bytes memory encodedPath,\\n        bytes memory rlpParentNodes,\\n        bytes32 root\\n    ) internal pure returns (bool proofValidity) {\\n        RLPReader.RLPItem memory item = RLPReader.toRlpItem(rlpParentNodes);\\n        RLPReader.RLPItem[] memory parentNodes = RLPReader.toList(item);\\n\\n        bytes memory currentNode;\\n        RLPReader.RLPItem[] memory currentNodeList;\\n\\n        bytes32 nodeKey = root;\\n        uint256 pathPtr = 0;\\n\\n        bytes memory path = _getNibbleArray(encodedPath);\\n        if (path.length == 0) {\\n            return false;\\n        }\\n\\n        for (uint256 i = 0; i < parentNodes.length; i++) {\\n            if (pathPtr > path.length) {\\n                return false;\\n            }\\n\\n            currentNode = RLPReader.toRlpBytes(parentNodes[i]);\\n            if (nodeKey != keccak256(currentNode)) {\\n                return false;\\n            }\\n            currentNodeList = RLPReader.toList(parentNodes[i]);\\n\\n            if (currentNodeList.length == 17) {\\n                if (pathPtr == path.length) {\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[16])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                uint8 nextPathNibble = uint8(path[pathPtr]);\\n                if (nextPathNibble > 16) {\\n                    return false;\\n                }\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[nextPathNibble]));\\n                pathPtr += 1;\\n            } else if (currentNodeList.length == 2) {\\n                uint256 traversed = _nibblesToTraverse(RLPReader.toBytes(currentNodeList[0]), path, pathPtr);\\n                if (pathPtr + traversed == path.length) {\\n                    //leaf node\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[1])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                //extension node\\n                if (traversed == 0) {\\n                    return false;\\n                }\\n\\n                pathPtr += traversed;\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[1]));\\n            } else {\\n                return false;\\n            }\\n        }\\n    }\\n\\n    function _nibblesToTraverse(\\n        bytes memory encodedPartialPath,\\n        bytes memory path,\\n        uint256 pathPtr\\n    ) private pure returns (uint256) {\\n        uint256 len = 0;\\n        // encodedPartialPath has elements that are each two hex characters (1 byte), but partialPath\\n        // and slicedPath have elements that are each one hex character (1 nibble)\\n        bytes memory partialPath = _getNibbleArray(encodedPartialPath);\\n        bytes memory slicedPath = new bytes(partialPath.length);\\n\\n        // pathPtr counts nibbles in path\\n        // partialPath.length is a number of nibbles\\n        for (uint256 i = pathPtr; i < pathPtr + partialPath.length; i++) {\\n            bytes1 pathNibble = path[i];\\n            slicedPath[i - pathPtr] = pathNibble;\\n        }\\n\\n        if (keccak256(partialPath) == keccak256(slicedPath)) {\\n            len = partialPath.length;\\n        } else {\\n            len = 0;\\n        }\\n        return len;\\n    }\\n\\n    // bytes b must be hp encoded\\n    function _getNibbleArray(bytes memory b) internal pure returns (bytes memory) {\\n        bytes memory nibbles = \\\"\\\";\\n        if (b.length > 0) {\\n            uint8 offset;\\n            uint8 hpNibble = uint8(_getNthNibbleOfBytes(0, b));\\n            if (hpNibble == 1 || hpNibble == 3) {\\n                nibbles = new bytes(b.length * 2 - 1);\\n                bytes1 oddNibble = _getNthNibbleOfBytes(1, b);\\n                nibbles[0] = oddNibble;\\n                offset = 1;\\n            } else {\\n                nibbles = new bytes(b.length * 2 - 2);\\n                offset = 0;\\n            }\\n\\n            for (uint256 i = offset; i < nibbles.length; i++) {\\n                nibbles[i] = _getNthNibbleOfBytes(i - offset + 2, b);\\n            }\\n        }\\n        return nibbles;\\n    }\\n\\n    function _getNthNibbleOfBytes(uint256 n, bytes memory str) private pure returns (bytes1) {\\n        return bytes1(n % 2 == 0 ? uint8(str[n / 2]) / 0x10 : uint8(str[n / 2]) % 0x10);\\n    }\\n}\\n\",\"keccak256\":\"0x97368bbde86aa76fee466f89209daa01da1365d8b9a09c4123419fd033dbcb49\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/RLPReader.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\\n// There are two modifications such that this contract compiles with Solidity v8:\\n// - Line 86: cannot convert directly from uint256 --> address\\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\\n//   statement\\n// More details on Solidity v0.8.0 breaking changes here:\\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\\npragma solidity ^0.8.0;\\n\\nlibrary RLPReader {\\n    uint8 constant STRING_SHORT_START = 0x80;\\n    uint8 constant STRING_LONG_START = 0xb8;\\n    uint8 constant LIST_SHORT_START = 0xc0;\\n    uint8 constant LIST_LONG_START = 0xf8;\\n    uint8 constant WORD_SIZE = 32;\\n\\n    struct RLPItem {\\n        uint256 len;\\n        uint256 memPtr;\\n    }\\n\\n    /*\\n     * @param item RLP encoded bytes\\n     */\\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\\n        require(item.length > 0, \\\"RLPReader: INVALID_BYTES_LENGTH\\\");\\n        uint256 memPtr;\\n        assembly {\\n            memPtr := add(item, 0x20)\\n        }\\n\\n        return RLPItem(item.length, memPtr);\\n    }\\n\\n    /*\\n     * @param item RLP encoded list in bytes\\n     */\\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\\n        require(isList(item), \\\"RLPReader: ITEM_NOT_LIST\\\");\\n\\n        uint256 items = numItems(item);\\n        RLPItem[] memory result = new RLPItem[](items);\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: LIST_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 dataLen;\\n        for (uint256 i = 0; i < items; i++) {\\n            dataLen = _itemLength(memPtr);\\n            result[i] = RLPItem(dataLen, memPtr);\\n            memPtr = memPtr + dataLen;\\n        }\\n\\n        return result;\\n    }\\n\\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\\n    function isList(RLPItem memory item) internal pure returns (bool) {\\n        uint8 byte0;\\n        uint256 memPtr = item.memPtr;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < LIST_SHORT_START) return false;\\n        return true;\\n    }\\n\\n    /** RLPItem conversions into data types **/\\n\\n    // @returns raw rlp encoding in bytes\\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        bytes memory result = new bytes(item.len);\\n\\n        uint256 ptr;\\n        assembly {\\n            ptr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr, ptr, item.len);\\n        return result;\\n    }\\n\\n    function toAddress(RLPItem memory item) internal pure returns (address) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_ADDRESS\\\");\\n        // 1 byte for the length prefix\\n        require(item.len == 21, \\\"RLPReader: INVALID_ADDRESS_LENGTH\\\");\\n\\n        return address(uint160(toUint(item)));\\n    }\\n\\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_UINT\\\");\\n        require(item.len <= 33, \\\"RLPReader: INVALID_UINT_LENGTH\\\");\\n\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 offset = _payloadOffset(item.memPtr);\\n        uint256 len = item.len - offset;\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + offset;\\n        assembly {\\n            result := mload(memPtr)\\n\\n            // shfit to the correct location if neccesary\\n            if lt(len, 32) {\\n                result := div(result, exp(256, sub(32, len)))\\n            }\\n        }\\n\\n        return result;\\n    }\\n\\n    // enforces 32 byte length\\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\\\");\\n        // one byte prefix\\n        require(item.len == 33, \\\"RLPReader: INVALID_UINT_STRICT_LENGTH\\\");\\n\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + 1;\\n        assembly {\\n            result := mload(memPtr)\\n        }\\n\\n        return result;\\n    }\\n\\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\\\");\\n        uint256 offset = _payloadOffset(item.memPtr);\\n\\n        uint256 len = item.len - offset; // data length\\n        bytes memory result = new bytes(len);\\n\\n        uint256 destPtr;\\n        assembly {\\n            destPtr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr + offset, destPtr, len);\\n        return result;\\n    }\\n\\n    /*\\n     * Private Helpers\\n     */\\n\\n    // @return number of payload items inside an encoded list.\\n    function numItems(RLPItem memory item) private pure returns (uint256) {\\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\\n        // require(isList(item), \\\"RLPReader: NUM_ITEMS_NOT_LIST\\\");\\n\\n        uint256 count = 0;\\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 endPtr = item.memPtr + item.len;\\n        while (currPtr < endPtr) {\\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\\n            require(currPtr <= endPtr, \\\"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\\\");\\n            count++;\\n        }\\n\\n        return count;\\n    }\\n\\n    // @return entire rlp item byte length\\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\\n        uint256 itemLen;\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\\n        else if (byte0 < LIST_SHORT_START) {\\n            assembly {\\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\\n                memPtr := add(memPtr, 1) // skip over the first byte\\n\\n                /* 32 byte word size */\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        } else if (byte0 < LIST_LONG_START) {\\n            itemLen = byte0 - LIST_SHORT_START + 1;\\n        } else {\\n            assembly {\\n                let byteLen := sub(byte0, 0xf7)\\n                memPtr := add(memPtr, 1)\\n\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        }\\n\\n        return itemLen;\\n    }\\n\\n    // @return number of bytes until the data\\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) return 0;\\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\\n        else if (byte0 < LIST_SHORT_START)\\n            // being explicit\\n            return byte0 - (STRING_LONG_START - 1) + 1;\\n        else return byte0 - (LIST_LONG_START - 1) + 1;\\n    }\\n\\n    /*\\n     * @param src Pointer to source\\n     * @param dest Pointer to destination\\n     * @param len Amount of memory to copy from the source\\n     */\\n    function copy(\\n        uint256 src,\\n        uint256 dest,\\n        uint256 len\\n    ) private pure {\\n        if (len == 0) return;\\n\\n        // copy as many word sizes as possible\\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n\\n            src += WORD_SIZE;\\n            dest += WORD_SIZE;\\n        }\\n\\n        unchecked {\\n            // left over bytes. Mask is used to remove unwanted bytes from the word\\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask)) // zero out src\\n                let destpart := and(mload(dest), mask) // retrieve the bytes\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfb5c3e814176470a6674c8268fe308f0bc725578d165aafbfb3cdbb72d0cf600\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/polygon/lib/RLPReader.sol": {
                "RLPReader": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039970a07efc78fcd4702490d60bdb39bd9d0e17232363f968717a44200760e9b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY SWAP8 EXP SMOD 0xEF 0xC7 DUP16 0xCD SELFBALANCE MUL 0x49 0xD PUSH1 0xBD 0xB3 SWAP12 0xD9 0xD0 0xE1 PUSH19 0x32363F968717A44200760E9B64736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "565:7905:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;565:7905:2;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039970a07efc78fcd4702490d60bdb39bd9d0e17232363f968717a44200760e9b64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY SWAP8 EXP SMOD 0xEF 0xC7 DUP16 0xCD SELFBALANCE MUL 0x49 0xD PUSH1 0xBD 0xB3 SWAP12 0xD9 0xD0 0xE1 PUSH19 0x32363F968717A44200760E9B64736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "565:7905:2:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "_itemLength(uint256)": "infinite",
                                "_payloadOffset(uint256)": "infinite",
                                "copy(uint256,uint256,uint256)": "infinite",
                                "isList(struct RLPReader.RLPItem memory)": "infinite",
                                "numItems(struct RLPReader.RLPItem memory)": "infinite",
                                "toAddress(struct RLPReader.RLPItem memory)": "infinite",
                                "toBytes(struct RLPReader.RLPItem memory)": "infinite",
                                "toList(struct RLPReader.RLPItem memory)": "infinite",
                                "toRlpBytes(struct RLPReader.RLPItem memory)": "infinite",
                                "toRlpItem(bytes memory)": "infinite",
                                "toUint(struct RLPReader.RLPItem memory)": "infinite",
                                "toUintStrict(struct RLPReader.RLPItem memory)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/lib/RLPReader.sol\":\"RLPReader\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/RLPReader.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\\n// There are two modifications such that this contract compiles with Solidity v8:\\n// - Line 86: cannot convert directly from uint256 --> address\\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\\n//   statement\\n// More details on Solidity v0.8.0 breaking changes here:\\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\\npragma solidity ^0.8.0;\\n\\nlibrary RLPReader {\\n    uint8 constant STRING_SHORT_START = 0x80;\\n    uint8 constant STRING_LONG_START = 0xb8;\\n    uint8 constant LIST_SHORT_START = 0xc0;\\n    uint8 constant LIST_LONG_START = 0xf8;\\n    uint8 constant WORD_SIZE = 32;\\n\\n    struct RLPItem {\\n        uint256 len;\\n        uint256 memPtr;\\n    }\\n\\n    /*\\n     * @param item RLP encoded bytes\\n     */\\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\\n        require(item.length > 0, \\\"RLPReader: INVALID_BYTES_LENGTH\\\");\\n        uint256 memPtr;\\n        assembly {\\n            memPtr := add(item, 0x20)\\n        }\\n\\n        return RLPItem(item.length, memPtr);\\n    }\\n\\n    /*\\n     * @param item RLP encoded list in bytes\\n     */\\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\\n        require(isList(item), \\\"RLPReader: ITEM_NOT_LIST\\\");\\n\\n        uint256 items = numItems(item);\\n        RLPItem[] memory result = new RLPItem[](items);\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: LIST_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 dataLen;\\n        for (uint256 i = 0; i < items; i++) {\\n            dataLen = _itemLength(memPtr);\\n            result[i] = RLPItem(dataLen, memPtr);\\n            memPtr = memPtr + dataLen;\\n        }\\n\\n        return result;\\n    }\\n\\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\\n    function isList(RLPItem memory item) internal pure returns (bool) {\\n        uint8 byte0;\\n        uint256 memPtr = item.memPtr;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < LIST_SHORT_START) return false;\\n        return true;\\n    }\\n\\n    /** RLPItem conversions into data types **/\\n\\n    // @returns raw rlp encoding in bytes\\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        bytes memory result = new bytes(item.len);\\n\\n        uint256 ptr;\\n        assembly {\\n            ptr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr, ptr, item.len);\\n        return result;\\n    }\\n\\n    function toAddress(RLPItem memory item) internal pure returns (address) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_ADDRESS\\\");\\n        // 1 byte for the length prefix\\n        require(item.len == 21, \\\"RLPReader: INVALID_ADDRESS_LENGTH\\\");\\n\\n        return address(uint160(toUint(item)));\\n    }\\n\\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_UINT\\\");\\n        require(item.len <= 33, \\\"RLPReader: INVALID_UINT_LENGTH\\\");\\n\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 offset = _payloadOffset(item.memPtr);\\n        uint256 len = item.len - offset;\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + offset;\\n        assembly {\\n            result := mload(memPtr)\\n\\n            // shfit to the correct location if neccesary\\n            if lt(len, 32) {\\n                result := div(result, exp(256, sub(32, len)))\\n            }\\n        }\\n\\n        return result;\\n    }\\n\\n    // enforces 32 byte length\\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\\\");\\n        // one byte prefix\\n        require(item.len == 33, \\\"RLPReader: INVALID_UINT_STRICT_LENGTH\\\");\\n\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + 1;\\n        assembly {\\n            result := mload(memPtr)\\n        }\\n\\n        return result;\\n    }\\n\\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\\\");\\n        uint256 offset = _payloadOffset(item.memPtr);\\n\\n        uint256 len = item.len - offset; // data length\\n        bytes memory result = new bytes(len);\\n\\n        uint256 destPtr;\\n        assembly {\\n            destPtr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr + offset, destPtr, len);\\n        return result;\\n    }\\n\\n    /*\\n     * Private Helpers\\n     */\\n\\n    // @return number of payload items inside an encoded list.\\n    function numItems(RLPItem memory item) private pure returns (uint256) {\\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\\n        // require(isList(item), \\\"RLPReader: NUM_ITEMS_NOT_LIST\\\");\\n\\n        uint256 count = 0;\\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 endPtr = item.memPtr + item.len;\\n        while (currPtr < endPtr) {\\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\\n            require(currPtr <= endPtr, \\\"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\\\");\\n            count++;\\n        }\\n\\n        return count;\\n    }\\n\\n    // @return entire rlp item byte length\\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\\n        uint256 itemLen;\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\\n        else if (byte0 < LIST_SHORT_START) {\\n            assembly {\\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\\n                memPtr := add(memPtr, 1) // skip over the first byte\\n\\n                /* 32 byte word size */\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        } else if (byte0 < LIST_LONG_START) {\\n            itemLen = byte0 - LIST_SHORT_START + 1;\\n        } else {\\n            assembly {\\n                let byteLen := sub(byte0, 0xf7)\\n                memPtr := add(memPtr, 1)\\n\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        }\\n\\n        return itemLen;\\n    }\\n\\n    // @return number of bytes until the data\\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) return 0;\\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\\n        else if (byte0 < LIST_SHORT_START)\\n            // being explicit\\n            return byte0 - (STRING_LONG_START - 1) + 1;\\n        else return byte0 - (LIST_LONG_START - 1) + 1;\\n    }\\n\\n    /*\\n     * @param src Pointer to source\\n     * @param dest Pointer to destination\\n     * @param len Amount of memory to copy from the source\\n     */\\n    function copy(\\n        uint256 src,\\n        uint256 dest,\\n        uint256 len\\n    ) private pure {\\n        if (len == 0) return;\\n\\n        // copy as many word sizes as possible\\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n\\n            src += WORD_SIZE;\\n            dest += WORD_SIZE;\\n        }\\n\\n        unchecked {\\n            // left over bytes. Mask is used to remove unwanted bytes from the word\\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask)) // zero out src\\n                let destpart := and(mload(dest), mask) // retrieve the bytes\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfb5c3e814176470a6674c8268fe308f0bc725578d165aafbfb3cdbb72d0cf600\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol": {
                "FxBaseRootTunnel": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "SEND_MESSAGE_EVENT_SIG",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "checkpointManager",
                            "outputs": [
                                {
                                    "internalType": "contract ICheckpointManager",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "fxChildTunnel",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "fxRoot",
                            "outputs": [
                                {
                                    "internalType": "contract IFxStateSender",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "processedExits",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "inputData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "receiveMessage",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_fxChildTunnel",
                                    "type": "address"
                                }
                            ],
                            "name": "setFxChildTunnel",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "receiveMessage(bytes)": {
                                "details": "This function verifies if the transaction actually happened on child chain",
                                "params": {
                                    "inputData": "RLP encoded data of the reference tx containing following list of fields  0 - headerNumber - Checkpoint header block number containing the reference tx  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root  2 - blockNumber - Block number containing the reference tx on child chain  3 - blockTime - Reference tx block time  4 - txRoot - Transactions root of block  5 - receiptRoot - Receipts root of block  6 - receipt - Receipt of the reference transaction  7 - receiptProof - Merkle proof of the reference receipt  8 - branchMask - 32 bits denoting the path of receipt in merkle tree  9 - receiptLogIndex - Log Index to read from the receipt"
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "SEND_MESSAGE_EVENT_SIG()": "0e387de6",
                            "checkpointManager()": "c0857ba0",
                            "fxChildTunnel()": "972c4928",
                            "fxRoot()": "de9b771f",
                            "processedExits(bytes32)": "607f2d42",
                            "receiveMessage(bytes)": "f953cec7",
                            "setFxChildTunnel(address)": "aea4e49e"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SEND_MESSAGE_EVENT_SIG\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpointManager\",\"outputs\":[{\"internalType\":\"contract ICheckpointManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fxChildTunnel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fxRoot\",\"outputs\":[{\"internalType\":\"contract IFxStateSender\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"processedExits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"receiveMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fxChildTunnel\",\"type\":\"address\"}],\"name\":\"setFxChildTunnel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveMessage(bytes)\":{\"details\":\"This function verifies if the transaction actually happened on child chain\",\"params\":{\"inputData\":\"RLP encoded data of the reference tx containing following list of fields  0 - headerNumber - Checkpoint header block number containing the reference tx  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root  2 - blockNumber - Block number containing the reference tx on child chain  3 - blockTime - Reference tx block time  4 - txRoot - Transactions root of block  5 - receiptRoot - Receipts root of block  6 - receipt - Receipt of the reference transaction  7 - receiptProof - Merkle proof of the reference receipt  8 - branchMask - 32 bits denoting the path of receipt in merkle tree  9 - receiptLogIndex - Log Index to read from the receipt\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"receiveMessage(bytes)\":{\"notice\":\"receive message from  L2 to L1, validated by proof\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":\"FxBaseRootTunnel\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/Merkle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nlibrary Merkle {\\n    function checkMembership(\\n        bytes32 leaf,\\n        uint256 index,\\n        bytes32 rootHash,\\n        bytes memory proof\\n    ) internal pure returns (bool) {\\n        require(proof.length % 32 == 0, \\\"Invalid proof length\\\");\\n        uint256 proofHeight = proof.length / 32;\\n        // Proof of size n means, height of the tree is n+1.\\n        // In a tree of height n+1, max #leafs possible is 2 ^ n\\n        require(index < 2**proofHeight, \\\"Leaf index is too big\\\");\\n\\n        bytes32 proofElement;\\n        bytes32 computedHash = leaf;\\n        for (uint256 i = 32; i <= proof.length; i += 32) {\\n            assembly {\\n                proofElement := mload(add(proof, i))\\n            }\\n\\n            if (index % 2 == 0) {\\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\\n            } else {\\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\\n            }\\n\\n            index = index / 2;\\n        }\\n        return computedHash == rootHash;\\n    }\\n}\\n\",\"keccak256\":\"0xb4b25515352f860f14f2382ab898120218ccc3122458e621b102ce959f884b54\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/MerklePatriciaProof.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport { RLPReader } from \\\"./RLPReader.sol\\\";\\n\\nlibrary MerklePatriciaProof {\\n    /*\\n     * @dev Verifies a merkle patricia proof.\\n     * @param value The terminating value in the trie.\\n     * @param encodedPath The path in the trie leading to value.\\n     * @param rlpParentNodes The rlp encoded stack of nodes.\\n     * @param root The root hash of the trie.\\n     * @return The boolean validity of the proof.\\n     */\\n    function verify(\\n        bytes memory value,\\n        bytes memory encodedPath,\\n        bytes memory rlpParentNodes,\\n        bytes32 root\\n    ) internal pure returns (bool proofValidity) {\\n        RLPReader.RLPItem memory item = RLPReader.toRlpItem(rlpParentNodes);\\n        RLPReader.RLPItem[] memory parentNodes = RLPReader.toList(item);\\n\\n        bytes memory currentNode;\\n        RLPReader.RLPItem[] memory currentNodeList;\\n\\n        bytes32 nodeKey = root;\\n        uint256 pathPtr = 0;\\n\\n        bytes memory path = _getNibbleArray(encodedPath);\\n        if (path.length == 0) {\\n            return false;\\n        }\\n\\n        for (uint256 i = 0; i < parentNodes.length; i++) {\\n            if (pathPtr > path.length) {\\n                return false;\\n            }\\n\\n            currentNode = RLPReader.toRlpBytes(parentNodes[i]);\\n            if (nodeKey != keccak256(currentNode)) {\\n                return false;\\n            }\\n            currentNodeList = RLPReader.toList(parentNodes[i]);\\n\\n            if (currentNodeList.length == 17) {\\n                if (pathPtr == path.length) {\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[16])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                uint8 nextPathNibble = uint8(path[pathPtr]);\\n                if (nextPathNibble > 16) {\\n                    return false;\\n                }\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[nextPathNibble]));\\n                pathPtr += 1;\\n            } else if (currentNodeList.length == 2) {\\n                uint256 traversed = _nibblesToTraverse(RLPReader.toBytes(currentNodeList[0]), path, pathPtr);\\n                if (pathPtr + traversed == path.length) {\\n                    //leaf node\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[1])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                //extension node\\n                if (traversed == 0) {\\n                    return false;\\n                }\\n\\n                pathPtr += traversed;\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[1]));\\n            } else {\\n                return false;\\n            }\\n        }\\n    }\\n\\n    function _nibblesToTraverse(\\n        bytes memory encodedPartialPath,\\n        bytes memory path,\\n        uint256 pathPtr\\n    ) private pure returns (uint256) {\\n        uint256 len = 0;\\n        // encodedPartialPath has elements that are each two hex characters (1 byte), but partialPath\\n        // and slicedPath have elements that are each one hex character (1 nibble)\\n        bytes memory partialPath = _getNibbleArray(encodedPartialPath);\\n        bytes memory slicedPath = new bytes(partialPath.length);\\n\\n        // pathPtr counts nibbles in path\\n        // partialPath.length is a number of nibbles\\n        for (uint256 i = pathPtr; i < pathPtr + partialPath.length; i++) {\\n            bytes1 pathNibble = path[i];\\n            slicedPath[i - pathPtr] = pathNibble;\\n        }\\n\\n        if (keccak256(partialPath) == keccak256(slicedPath)) {\\n            len = partialPath.length;\\n        } else {\\n            len = 0;\\n        }\\n        return len;\\n    }\\n\\n    // bytes b must be hp encoded\\n    function _getNibbleArray(bytes memory b) internal pure returns (bytes memory) {\\n        bytes memory nibbles = \\\"\\\";\\n        if (b.length > 0) {\\n            uint8 offset;\\n            uint8 hpNibble = uint8(_getNthNibbleOfBytes(0, b));\\n            if (hpNibble == 1 || hpNibble == 3) {\\n                nibbles = new bytes(b.length * 2 - 1);\\n                bytes1 oddNibble = _getNthNibbleOfBytes(1, b);\\n                nibbles[0] = oddNibble;\\n                offset = 1;\\n            } else {\\n                nibbles = new bytes(b.length * 2 - 2);\\n                offset = 0;\\n            }\\n\\n            for (uint256 i = offset; i < nibbles.length; i++) {\\n                nibbles[i] = _getNthNibbleOfBytes(i - offset + 2, b);\\n            }\\n        }\\n        return nibbles;\\n    }\\n\\n    function _getNthNibbleOfBytes(uint256 n, bytes memory str) private pure returns (bytes1) {\\n        return bytes1(n % 2 == 0 ? uint8(str[n / 2]) / 0x10 : uint8(str[n / 2]) % 0x10);\\n    }\\n}\\n\",\"keccak256\":\"0x97368bbde86aa76fee466f89209daa01da1365d8b9a09c4123419fd033dbcb49\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/RLPReader.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\\n// There are two modifications such that this contract compiles with Solidity v8:\\n// - Line 86: cannot convert directly from uint256 --> address\\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\\n//   statement\\n// More details on Solidity v0.8.0 breaking changes here:\\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\\npragma solidity ^0.8.0;\\n\\nlibrary RLPReader {\\n    uint8 constant STRING_SHORT_START = 0x80;\\n    uint8 constant STRING_LONG_START = 0xb8;\\n    uint8 constant LIST_SHORT_START = 0xc0;\\n    uint8 constant LIST_LONG_START = 0xf8;\\n    uint8 constant WORD_SIZE = 32;\\n\\n    struct RLPItem {\\n        uint256 len;\\n        uint256 memPtr;\\n    }\\n\\n    /*\\n     * @param item RLP encoded bytes\\n     */\\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\\n        require(item.length > 0, \\\"RLPReader: INVALID_BYTES_LENGTH\\\");\\n        uint256 memPtr;\\n        assembly {\\n            memPtr := add(item, 0x20)\\n        }\\n\\n        return RLPItem(item.length, memPtr);\\n    }\\n\\n    /*\\n     * @param item RLP encoded list in bytes\\n     */\\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\\n        require(isList(item), \\\"RLPReader: ITEM_NOT_LIST\\\");\\n\\n        uint256 items = numItems(item);\\n        RLPItem[] memory result = new RLPItem[](items);\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: LIST_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 dataLen;\\n        for (uint256 i = 0; i < items; i++) {\\n            dataLen = _itemLength(memPtr);\\n            result[i] = RLPItem(dataLen, memPtr);\\n            memPtr = memPtr + dataLen;\\n        }\\n\\n        return result;\\n    }\\n\\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\\n    function isList(RLPItem memory item) internal pure returns (bool) {\\n        uint8 byte0;\\n        uint256 memPtr = item.memPtr;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < LIST_SHORT_START) return false;\\n        return true;\\n    }\\n\\n    /** RLPItem conversions into data types **/\\n\\n    // @returns raw rlp encoding in bytes\\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        bytes memory result = new bytes(item.len);\\n\\n        uint256 ptr;\\n        assembly {\\n            ptr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr, ptr, item.len);\\n        return result;\\n    }\\n\\n    function toAddress(RLPItem memory item) internal pure returns (address) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_ADDRESS\\\");\\n        // 1 byte for the length prefix\\n        require(item.len == 21, \\\"RLPReader: INVALID_ADDRESS_LENGTH\\\");\\n\\n        return address(uint160(toUint(item)));\\n    }\\n\\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_UINT\\\");\\n        require(item.len <= 33, \\\"RLPReader: INVALID_UINT_LENGTH\\\");\\n\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 offset = _payloadOffset(item.memPtr);\\n        uint256 len = item.len - offset;\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + offset;\\n        assembly {\\n            result := mload(memPtr)\\n\\n            // shfit to the correct location if neccesary\\n            if lt(len, 32) {\\n                result := div(result, exp(256, sub(32, len)))\\n            }\\n        }\\n\\n        return result;\\n    }\\n\\n    // enforces 32 byte length\\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\\\");\\n        // one byte prefix\\n        require(item.len == 33, \\\"RLPReader: INVALID_UINT_STRICT_LENGTH\\\");\\n\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + 1;\\n        assembly {\\n            result := mload(memPtr)\\n        }\\n\\n        return result;\\n    }\\n\\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\\\");\\n        uint256 offset = _payloadOffset(item.memPtr);\\n\\n        uint256 len = item.len - offset; // data length\\n        bytes memory result = new bytes(len);\\n\\n        uint256 destPtr;\\n        assembly {\\n            destPtr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr + offset, destPtr, len);\\n        return result;\\n    }\\n\\n    /*\\n     * Private Helpers\\n     */\\n\\n    // @return number of payload items inside an encoded list.\\n    function numItems(RLPItem memory item) private pure returns (uint256) {\\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\\n        // require(isList(item), \\\"RLPReader: NUM_ITEMS_NOT_LIST\\\");\\n\\n        uint256 count = 0;\\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 endPtr = item.memPtr + item.len;\\n        while (currPtr < endPtr) {\\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\\n            require(currPtr <= endPtr, \\\"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\\\");\\n            count++;\\n        }\\n\\n        return count;\\n    }\\n\\n    // @return entire rlp item byte length\\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\\n        uint256 itemLen;\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\\n        else if (byte0 < LIST_SHORT_START) {\\n            assembly {\\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\\n                memPtr := add(memPtr, 1) // skip over the first byte\\n\\n                /* 32 byte word size */\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        } else if (byte0 < LIST_LONG_START) {\\n            itemLen = byte0 - LIST_SHORT_START + 1;\\n        } else {\\n            assembly {\\n                let byteLen := sub(byte0, 0xf7)\\n                memPtr := add(memPtr, 1)\\n\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        }\\n\\n        return itemLen;\\n    }\\n\\n    // @return number of bytes until the data\\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) return 0;\\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\\n        else if (byte0 < LIST_SHORT_START)\\n            // being explicit\\n            return byte0 - (STRING_LONG_START - 1) + 1;\\n        else return byte0 - (LIST_LONG_START - 1) + 1;\\n    }\\n\\n    /*\\n     * @param src Pointer to source\\n     * @param dest Pointer to destination\\n     * @param len Amount of memory to copy from the source\\n     */\\n    function copy(\\n        uint256 src,\\n        uint256 dest,\\n        uint256 len\\n    ) private pure {\\n        if (len == 0) return;\\n\\n        // copy as many word sizes as possible\\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n\\n            src += WORD_SIZE;\\n            dest += WORD_SIZE;\\n        }\\n\\n        unchecked {\\n            // left over bytes. Mask is used to remove unwanted bytes from the word\\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask)) // zero out src\\n                let destpart := and(mload(dest), mask) // retrieve the bytes\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfb5c3e814176470a6674c8268fe308f0bc725578d165aafbfb3cdbb72d0cf600\",\"license\":\"MIT\"},\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport \\\"../lib/RLPReader.sol\\\";\\nimport \\\"../lib/MerklePatriciaProof.sol\\\";\\nimport \\\"../lib/Merkle.sol\\\";\\n\\ninterface IFxStateSender {\\n    function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\ncontract ICheckpointManager {\\n    struct HeaderBlock {\\n        bytes32 root;\\n        uint256 start;\\n        uint256 end;\\n        uint256 createdAt;\\n        address proposer;\\n    }\\n\\n    /**\\n     * @notice mapping of checkpoint header numbers to block details\\n     * @dev These checkpoints are submited by plasma contracts\\n     */\\n    mapping(uint256 => HeaderBlock) public headerBlocks;\\n}\\n\\nabstract contract FxBaseRootTunnel {\\n    using RLPReader for bytes;\\n    using RLPReader for RLPReader.RLPItem;\\n    using Merkle for bytes32;\\n\\n    // keccak256(MessageSent(bytes))\\n    bytes32 public constant SEND_MESSAGE_EVENT_SIG = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036;\\n\\n    // state sender contract\\n    IFxStateSender public fxRoot;\\n    // root chain manager\\n    ICheckpointManager public checkpointManager;\\n    // child tunnel contract which receives and sends messages\\n    address public fxChildTunnel;\\n\\n    // storage to avoid duplicate exits\\n    mapping(bytes32 => bool) public processedExits;\\n\\n    constructor(address _checkpointManager, address _fxRoot) {\\n        checkpointManager = ICheckpointManager(_checkpointManager);\\n        fxRoot = IFxStateSender(_fxRoot);\\n    }\\n\\n    // set fxChildTunnel if not set already\\n    function setFxChildTunnel(address _fxChildTunnel) public {\\n        require(fxChildTunnel == address(0x0), \\\"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\\\");\\n        fxChildTunnel = _fxChildTunnel;\\n    }\\n\\n    /**\\n     * @notice Send bytes message to Child Tunnel\\n     * @param message bytes message that will be sent to Child Tunnel\\n     * some message examples -\\n     *   abi.encode(tokenId);\\n     *   abi.encode(tokenId, tokenMetadata);\\n     *   abi.encode(messageType, messageData);\\n     */\\n    function _sendMessageToChild(bytes memory message) internal {\\n        fxRoot.sendMessageToChild(fxChildTunnel, message);\\n    }\\n\\n    function _validateAndExtractMessage(bytes memory inputData) internal returns (bytes memory) {\\n        RLPReader.RLPItem[] memory inputDataRLPList = inputData.toRlpItem().toList();\\n\\n        // checking if exit has already been processed\\n        // unique exit is identified using hash of (blockNumber, branchMask, receiptLogIndex)\\n        bytes32 exitHash =\\n            keccak256(\\n                abi.encodePacked(\\n                    inputDataRLPList[2].toUint(), // blockNumber\\n                    // first 2 nibbles are dropped while generating nibble array\\n                    // this allows branch masks that are valid but bypass exitHash check (changing first 2 nibbles only)\\n                    // so converting to nibble array and then hashing it\\n                    MerklePatriciaProof._getNibbleArray(inputDataRLPList[8].toBytes()), // branchMask\\n                    inputDataRLPList[9].toUint() // receiptLogIndex\\n                )\\n            );\\n        require(processedExits[exitHash] == false, \\\"FxRootTunnel: EXIT_ALREADY_PROCESSED\\\");\\n        processedExits[exitHash] = true;\\n\\n        RLPReader.RLPItem[] memory receiptRLPList = inputDataRLPList[6].toBytes().toRlpItem().toList();\\n        RLPReader.RLPItem memory logRLP =\\n            receiptRLPList[3].toList()[\\n                inputDataRLPList[9].toUint() // receiptLogIndex\\n            ];\\n\\n        RLPReader.RLPItem[] memory logRLPList = logRLP.toList();\\n\\n        // check child tunnel\\n        require(fxChildTunnel == RLPReader.toAddress(logRLPList[0]), \\\"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\\\");\\n\\n        // verify receipt inclusion\\n        require(\\n            MerklePatriciaProof.verify(\\n                inputDataRLPList[6].toBytes(), // receipt\\n                inputDataRLPList[8].toBytes(), // branchMask\\n                inputDataRLPList[7].toBytes(), // receiptProof\\n                bytes32(inputDataRLPList[5].toUint()) // receiptRoot\\n            ),\\n            \\\"FxRootTunnel: INVALID_RECEIPT_PROOF\\\"\\n        );\\n\\n        // verify checkpoint inclusion\\n        _checkBlockMembershipInCheckpoint(\\n            inputDataRLPList[2].toUint(), // blockNumber\\n            inputDataRLPList[3].toUint(), // blockTime\\n            bytes32(inputDataRLPList[4].toUint()), // txRoot\\n            bytes32(inputDataRLPList[5].toUint()), // receiptRoot\\n            inputDataRLPList[0].toUint(), // headerNumber\\n            inputDataRLPList[1].toBytes() // blockProof\\n        );\\n\\n        RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics\\n\\n        require(\\n            bytes32(logTopicRLPList[0].toUint()) == SEND_MESSAGE_EVENT_SIG, // topic0 is event sig\\n            \\\"FxRootTunnel: INVALID_SIGNATURE\\\"\\n        );\\n\\n        // received message data\\n        bytes memory receivedData = logRLPList[2].toBytes();\\n        bytes memory message = abi.decode(receivedData, (bytes)); // event decodes params again, so decoding bytes to get message\\n        return message;\\n    }\\n\\n    function _checkBlockMembershipInCheckpoint(\\n        uint256 blockNumber,\\n        uint256 blockTime,\\n        bytes32 txRoot,\\n        bytes32 receiptRoot,\\n        uint256 headerNumber,\\n        bytes memory blockProof\\n    ) private view returns (uint256) {\\n        (bytes32 headerRoot, uint256 startBlock, , uint256 createdAt, ) = checkpointManager.headerBlocks(headerNumber);\\n\\n        require(\\n            keccak256(abi.encodePacked(blockNumber, blockTime, txRoot, receiptRoot)).checkMembership(\\n                blockNumber - startBlock,\\n                headerRoot,\\n                blockProof\\n            ),\\n            \\\"FxRootTunnel: INVALID_HEADER\\\"\\n        );\\n        return createdAt;\\n    }\\n\\n    /**\\n     * @notice receive message from  L2 to L1, validated by proof\\n     * @dev This function verifies if the transaction actually happened on child chain\\n     *\\n     * @param inputData RLP encoded data of the reference tx containing following list of fields\\n     *  0 - headerNumber - Checkpoint header block number containing the reference tx\\n     *  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root\\n     *  2 - blockNumber - Block number containing the reference tx on child chain\\n     *  3 - blockTime - Reference tx block time\\n     *  4 - txRoot - Transactions root of block\\n     *  5 - receiptRoot - Receipts root of block\\n     *  6 - receipt - Receipt of the reference transaction\\n     *  7 - receiptProof - Merkle proof of the reference receipt\\n     *  8 - branchMask - 32 bits denoting the path of receipt in merkle tree\\n     *  9 - receiptLogIndex - Log Index to read from the receipt\\n     */\\n    function receiveMessage(bytes memory inputData) public virtual {\\n        bytes memory message = _validateAndExtractMessage(inputData);\\n        _processMessageFromChild(message);\\n    }\\n\\n    /**\\n     * @notice Process message received from Child Tunnel\\n     * @dev function needs to be implemented to handle message as per requirement\\n     * This is called by onStateReceive function.\\n     * Since it is called via a system call, any event will not be emitted during its execution.\\n     * @param message bytes message that was sent from Child Tunnel\\n     */\\n    function _processMessageFromChild(bytes memory message) internal virtual;\\n}\\n\",\"keccak256\":\"0xc49c1d728e24bec46f6f8ca2bbb65a507eb4275e8da746a78e21416bb6f6a046\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 1267,
                                "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:FxBaseRootTunnel",
                                "label": "fxRoot",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_contract(IFxStateSender)1233"
                            },
                            {
                                "astId": 1270,
                                "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:FxBaseRootTunnel",
                                "label": "checkpointManager",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_contract(ICheckpointManager)1251"
                            },
                            {
                                "astId": 1272,
                                "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:FxBaseRootTunnel",
                                "label": "fxChildTunnel",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 1276,
                                "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:FxBaseRootTunnel",
                                "label": "processedExits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_mapping(t_bytes32,t_bool)"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_contract(ICheckpointManager)1251": {
                                "encoding": "inplace",
                                "label": "contract ICheckpointManager",
                                "numberOfBytes": "20"
                            },
                            "t_contract(IFxStateSender)1233": {
                                "encoding": "inplace",
                                "label": "contract IFxStateSender",
                                "numberOfBytes": "20"
                            },
                            "t_mapping(t_bytes32,t_bool)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => bool)",
                                "numberOfBytes": "32",
                                "value": "t_bool"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "receiveMessage(bytes)": {
                                "notice": "receive message from  L2 to L1, validated by proof"
                            }
                        },
                        "version": 1
                    }
                },
                "ICheckpointManager": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "name": "headerBlocks",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "root",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "start",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "end",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "createdAt",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "stateVariables": {
                            "headerBlocks": {
                                "details": "These checkpoints are submited by plasma contracts"
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b5061010d806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806341539d4a14602d575b600080fd5b607d603836600460bf565b600060208190529081526040902080546001820154600283015460038401546004909401549293919290919073ffffffffffffffffffffffffffffffffffffffff1685565b60408051958652602086019490945292840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00160405180910390f35b60006020828403121560d057600080fd5b503591905056fea2646970667358221220f978f1f81e683858eecd4cf6439e20f2cc5d4ab26204147181b962af6550e96064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41539D4A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7D PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH25 0xF1F81E683858EECD4CF6439E20F2CC5D4AB26204147181B962 0xAF PUSH6 0x50E96064736F PUSH13 0x63430008090033000000000000 ",
                            "sourceMap": "419:387:3:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@headerBlocks_1250": {
                                    "entryPoint": null,
                                    "id": 1250,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 191,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 6,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:713:4",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:4",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "84:110:4",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "130:16:4",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "139:1:4",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "142:1:4",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "132:6:4"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "132:12:4"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "132:12:4"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "105:7:4"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "114:9:4"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "101:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "101:23:4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "126:2:4",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "97:3:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "97:32:4"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "94:52:4"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "155:33:4",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "178:9:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "165:12:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "165:23:4"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "155:6:4"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:9:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:7:4",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "73:6:4",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:180:4"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "412:299:4",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "422:27:4",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "434:9:4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "445:3:4",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "430:3:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "430:19:4"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "422:4:4"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "465:9:4"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "476:6:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "458:6:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "458:25:4"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "458:25:4"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "503:9:4"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "514:2:4",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "499:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "499:18:4"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "519:6:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "492:6:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "492:34:4"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "492:34:4"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "546:9:4"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "557:2:4",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "542:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "542:18:4"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "562:6:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "535:6:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "535:34:4"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "535:34:4"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "589:9:4"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "600:2:4",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "585:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "585:18:4"
                                                                    },
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "605:6:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "578:6:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "578:34:4"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "578:34:4"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "632:9:4"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "643:3:4",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "628:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "628:19:4"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "653:6:4"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "661:42:4",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "649:3:4"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "649:55:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "621:6:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "621:84:4"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "621:84:4"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "349:9:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "360:6:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "368:6:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "376:6:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "384:6:4",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "392:6:4",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "403:4:4",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "199:512:4"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__to_t_bytes32_t_uint256_t_uint256_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                                    "id": 4,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c806341539d4a14602d575b600080fd5b607d603836600460bf565b600060208190529081526040902080546001820154600283015460038401546004909401549293919290919073ffffffffffffffffffffffffffffffffffffffff1685565b60408051958652602086019490945292840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00160405180910390f35b60006020828403121560d057600080fd5b503591905056fea2646970667358221220f978f1f81e683858eecd4cf6439e20f2cc5d4ab26204147181b962af6550e96064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x41539D4A EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7D PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0xBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP3 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 PUSH25 0xF1F81E683858EECD4CF6439E20F2CC5D4AB26204147181B962 0xAF PUSH6 0x50E96064736F PUSH13 0x63430008090033000000000000 ",
                            "sourceMap": "419:387:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;752:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:25:4;;;514:2;499:18;;492:34;;;;542:18;;;535:34;;;;600:2;585:18;;578:34;661:42;649:55;643:3;628:19;;621:84;445:3;430:19;752:51:3;;;;;;;14:180:4;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:4;;14:180;-1:-1:-1;14:180:4:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "53800",
                                "executionCost": "105",
                                "totalCost": "53905"
                            },
                            "external": {
                                "headerBlocks(uint256)": "10963"
                            }
                        },
                        "methodIdentifiers": {
                            "headerBlocks(uint256)": "41539d4a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"headerBlocks\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"headerBlocks\":{\"details\":\"These checkpoints are submited by plasma contracts\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"headerBlocks(uint256)\":{\"notice\":\"mapping of checkpoint header numbers to block details\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":\"ICheckpointManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/Merkle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nlibrary Merkle {\\n    function checkMembership(\\n        bytes32 leaf,\\n        uint256 index,\\n        bytes32 rootHash,\\n        bytes memory proof\\n    ) internal pure returns (bool) {\\n        require(proof.length % 32 == 0, \\\"Invalid proof length\\\");\\n        uint256 proofHeight = proof.length / 32;\\n        // Proof of size n means, height of the tree is n+1.\\n        // In a tree of height n+1, max #leafs possible is 2 ^ n\\n        require(index < 2**proofHeight, \\\"Leaf index is too big\\\");\\n\\n        bytes32 proofElement;\\n        bytes32 computedHash = leaf;\\n        for (uint256 i = 32; i <= proof.length; i += 32) {\\n            assembly {\\n                proofElement := mload(add(proof, i))\\n            }\\n\\n            if (index % 2 == 0) {\\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\\n            } else {\\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\\n            }\\n\\n            index = index / 2;\\n        }\\n        return computedHash == rootHash;\\n    }\\n}\\n\",\"keccak256\":\"0xb4b25515352f860f14f2382ab898120218ccc3122458e621b102ce959f884b54\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/MerklePatriciaProof.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport { RLPReader } from \\\"./RLPReader.sol\\\";\\n\\nlibrary MerklePatriciaProof {\\n    /*\\n     * @dev Verifies a merkle patricia proof.\\n     * @param value The terminating value in the trie.\\n     * @param encodedPath The path in the trie leading to value.\\n     * @param rlpParentNodes The rlp encoded stack of nodes.\\n     * @param root The root hash of the trie.\\n     * @return The boolean validity of the proof.\\n     */\\n    function verify(\\n        bytes memory value,\\n        bytes memory encodedPath,\\n        bytes memory rlpParentNodes,\\n        bytes32 root\\n    ) internal pure returns (bool proofValidity) {\\n        RLPReader.RLPItem memory item = RLPReader.toRlpItem(rlpParentNodes);\\n        RLPReader.RLPItem[] memory parentNodes = RLPReader.toList(item);\\n\\n        bytes memory currentNode;\\n        RLPReader.RLPItem[] memory currentNodeList;\\n\\n        bytes32 nodeKey = root;\\n        uint256 pathPtr = 0;\\n\\n        bytes memory path = _getNibbleArray(encodedPath);\\n        if (path.length == 0) {\\n            return false;\\n        }\\n\\n        for (uint256 i = 0; i < parentNodes.length; i++) {\\n            if (pathPtr > path.length) {\\n                return false;\\n            }\\n\\n            currentNode = RLPReader.toRlpBytes(parentNodes[i]);\\n            if (nodeKey != keccak256(currentNode)) {\\n                return false;\\n            }\\n            currentNodeList = RLPReader.toList(parentNodes[i]);\\n\\n            if (currentNodeList.length == 17) {\\n                if (pathPtr == path.length) {\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[16])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                uint8 nextPathNibble = uint8(path[pathPtr]);\\n                if (nextPathNibble > 16) {\\n                    return false;\\n                }\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[nextPathNibble]));\\n                pathPtr += 1;\\n            } else if (currentNodeList.length == 2) {\\n                uint256 traversed = _nibblesToTraverse(RLPReader.toBytes(currentNodeList[0]), path, pathPtr);\\n                if (pathPtr + traversed == path.length) {\\n                    //leaf node\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[1])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                //extension node\\n                if (traversed == 0) {\\n                    return false;\\n                }\\n\\n                pathPtr += traversed;\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[1]));\\n            } else {\\n                return false;\\n            }\\n        }\\n    }\\n\\n    function _nibblesToTraverse(\\n        bytes memory encodedPartialPath,\\n        bytes memory path,\\n        uint256 pathPtr\\n    ) private pure returns (uint256) {\\n        uint256 len = 0;\\n        // encodedPartialPath has elements that are each two hex characters (1 byte), but partialPath\\n        // and slicedPath have elements that are each one hex character (1 nibble)\\n        bytes memory partialPath = _getNibbleArray(encodedPartialPath);\\n        bytes memory slicedPath = new bytes(partialPath.length);\\n\\n        // pathPtr counts nibbles in path\\n        // partialPath.length is a number of nibbles\\n        for (uint256 i = pathPtr; i < pathPtr + partialPath.length; i++) {\\n            bytes1 pathNibble = path[i];\\n            slicedPath[i - pathPtr] = pathNibble;\\n        }\\n\\n        if (keccak256(partialPath) == keccak256(slicedPath)) {\\n            len = partialPath.length;\\n        } else {\\n            len = 0;\\n        }\\n        return len;\\n    }\\n\\n    // bytes b must be hp encoded\\n    function _getNibbleArray(bytes memory b) internal pure returns (bytes memory) {\\n        bytes memory nibbles = \\\"\\\";\\n        if (b.length > 0) {\\n            uint8 offset;\\n            uint8 hpNibble = uint8(_getNthNibbleOfBytes(0, b));\\n            if (hpNibble == 1 || hpNibble == 3) {\\n                nibbles = new bytes(b.length * 2 - 1);\\n                bytes1 oddNibble = _getNthNibbleOfBytes(1, b);\\n                nibbles[0] = oddNibble;\\n                offset = 1;\\n            } else {\\n                nibbles = new bytes(b.length * 2 - 2);\\n                offset = 0;\\n            }\\n\\n            for (uint256 i = offset; i < nibbles.length; i++) {\\n                nibbles[i] = _getNthNibbleOfBytes(i - offset + 2, b);\\n            }\\n        }\\n        return nibbles;\\n    }\\n\\n    function _getNthNibbleOfBytes(uint256 n, bytes memory str) private pure returns (bytes1) {\\n        return bytes1(n % 2 == 0 ? uint8(str[n / 2]) / 0x10 : uint8(str[n / 2]) % 0x10);\\n    }\\n}\\n\",\"keccak256\":\"0x97368bbde86aa76fee466f89209daa01da1365d8b9a09c4123419fd033dbcb49\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/RLPReader.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\\n// There are two modifications such that this contract compiles with Solidity v8:\\n// - Line 86: cannot convert directly from uint256 --> address\\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\\n//   statement\\n// More details on Solidity v0.8.0 breaking changes here:\\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\\npragma solidity ^0.8.0;\\n\\nlibrary RLPReader {\\n    uint8 constant STRING_SHORT_START = 0x80;\\n    uint8 constant STRING_LONG_START = 0xb8;\\n    uint8 constant LIST_SHORT_START = 0xc0;\\n    uint8 constant LIST_LONG_START = 0xf8;\\n    uint8 constant WORD_SIZE = 32;\\n\\n    struct RLPItem {\\n        uint256 len;\\n        uint256 memPtr;\\n    }\\n\\n    /*\\n     * @param item RLP encoded bytes\\n     */\\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\\n        require(item.length > 0, \\\"RLPReader: INVALID_BYTES_LENGTH\\\");\\n        uint256 memPtr;\\n        assembly {\\n            memPtr := add(item, 0x20)\\n        }\\n\\n        return RLPItem(item.length, memPtr);\\n    }\\n\\n    /*\\n     * @param item RLP encoded list in bytes\\n     */\\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\\n        require(isList(item), \\\"RLPReader: ITEM_NOT_LIST\\\");\\n\\n        uint256 items = numItems(item);\\n        RLPItem[] memory result = new RLPItem[](items);\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: LIST_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 dataLen;\\n        for (uint256 i = 0; i < items; i++) {\\n            dataLen = _itemLength(memPtr);\\n            result[i] = RLPItem(dataLen, memPtr);\\n            memPtr = memPtr + dataLen;\\n        }\\n\\n        return result;\\n    }\\n\\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\\n    function isList(RLPItem memory item) internal pure returns (bool) {\\n        uint8 byte0;\\n        uint256 memPtr = item.memPtr;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < LIST_SHORT_START) return false;\\n        return true;\\n    }\\n\\n    /** RLPItem conversions into data types **/\\n\\n    // @returns raw rlp encoding in bytes\\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        bytes memory result = new bytes(item.len);\\n\\n        uint256 ptr;\\n        assembly {\\n            ptr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr, ptr, item.len);\\n        return result;\\n    }\\n\\n    function toAddress(RLPItem memory item) internal pure returns (address) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_ADDRESS\\\");\\n        // 1 byte for the length prefix\\n        require(item.len == 21, \\\"RLPReader: INVALID_ADDRESS_LENGTH\\\");\\n\\n        return address(uint160(toUint(item)));\\n    }\\n\\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_UINT\\\");\\n        require(item.len <= 33, \\\"RLPReader: INVALID_UINT_LENGTH\\\");\\n\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 offset = _payloadOffset(item.memPtr);\\n        uint256 len = item.len - offset;\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + offset;\\n        assembly {\\n            result := mload(memPtr)\\n\\n            // shfit to the correct location if neccesary\\n            if lt(len, 32) {\\n                result := div(result, exp(256, sub(32, len)))\\n            }\\n        }\\n\\n        return result;\\n    }\\n\\n    // enforces 32 byte length\\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\\\");\\n        // one byte prefix\\n        require(item.len == 33, \\\"RLPReader: INVALID_UINT_STRICT_LENGTH\\\");\\n\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + 1;\\n        assembly {\\n            result := mload(memPtr)\\n        }\\n\\n        return result;\\n    }\\n\\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\\\");\\n        uint256 offset = _payloadOffset(item.memPtr);\\n\\n        uint256 len = item.len - offset; // data length\\n        bytes memory result = new bytes(len);\\n\\n        uint256 destPtr;\\n        assembly {\\n            destPtr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr + offset, destPtr, len);\\n        return result;\\n    }\\n\\n    /*\\n     * Private Helpers\\n     */\\n\\n    // @return number of payload items inside an encoded list.\\n    function numItems(RLPItem memory item) private pure returns (uint256) {\\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\\n        // require(isList(item), \\\"RLPReader: NUM_ITEMS_NOT_LIST\\\");\\n\\n        uint256 count = 0;\\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 endPtr = item.memPtr + item.len;\\n        while (currPtr < endPtr) {\\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\\n            require(currPtr <= endPtr, \\\"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\\\");\\n            count++;\\n        }\\n\\n        return count;\\n    }\\n\\n    // @return entire rlp item byte length\\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\\n        uint256 itemLen;\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\\n        else if (byte0 < LIST_SHORT_START) {\\n            assembly {\\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\\n                memPtr := add(memPtr, 1) // skip over the first byte\\n\\n                /* 32 byte word size */\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        } else if (byte0 < LIST_LONG_START) {\\n            itemLen = byte0 - LIST_SHORT_START + 1;\\n        } else {\\n            assembly {\\n                let byteLen := sub(byte0, 0xf7)\\n                memPtr := add(memPtr, 1)\\n\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        }\\n\\n        return itemLen;\\n    }\\n\\n    // @return number of bytes until the data\\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) return 0;\\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\\n        else if (byte0 < LIST_SHORT_START)\\n            // being explicit\\n            return byte0 - (STRING_LONG_START - 1) + 1;\\n        else return byte0 - (LIST_LONG_START - 1) + 1;\\n    }\\n\\n    /*\\n     * @param src Pointer to source\\n     * @param dest Pointer to destination\\n     * @param len Amount of memory to copy from the source\\n     */\\n    function copy(\\n        uint256 src,\\n        uint256 dest,\\n        uint256 len\\n    ) private pure {\\n        if (len == 0) return;\\n\\n        // copy as many word sizes as possible\\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n\\n            src += WORD_SIZE;\\n            dest += WORD_SIZE;\\n        }\\n\\n        unchecked {\\n            // left over bytes. Mask is used to remove unwanted bytes from the word\\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask)) // zero out src\\n                let destpart := and(mload(dest), mask) // retrieve the bytes\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfb5c3e814176470a6674c8268fe308f0bc725578d165aafbfb3cdbb72d0cf600\",\"license\":\"MIT\"},\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport \\\"../lib/RLPReader.sol\\\";\\nimport \\\"../lib/MerklePatriciaProof.sol\\\";\\nimport \\\"../lib/Merkle.sol\\\";\\n\\ninterface IFxStateSender {\\n    function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\ncontract ICheckpointManager {\\n    struct HeaderBlock {\\n        bytes32 root;\\n        uint256 start;\\n        uint256 end;\\n        uint256 createdAt;\\n        address proposer;\\n    }\\n\\n    /**\\n     * @notice mapping of checkpoint header numbers to block details\\n     * @dev These checkpoints are submited by plasma contracts\\n     */\\n    mapping(uint256 => HeaderBlock) public headerBlocks;\\n}\\n\\nabstract contract FxBaseRootTunnel {\\n    using RLPReader for bytes;\\n    using RLPReader for RLPReader.RLPItem;\\n    using Merkle for bytes32;\\n\\n    // keccak256(MessageSent(bytes))\\n    bytes32 public constant SEND_MESSAGE_EVENT_SIG = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036;\\n\\n    // state sender contract\\n    IFxStateSender public fxRoot;\\n    // root chain manager\\n    ICheckpointManager public checkpointManager;\\n    // child tunnel contract which receives and sends messages\\n    address public fxChildTunnel;\\n\\n    // storage to avoid duplicate exits\\n    mapping(bytes32 => bool) public processedExits;\\n\\n    constructor(address _checkpointManager, address _fxRoot) {\\n        checkpointManager = ICheckpointManager(_checkpointManager);\\n        fxRoot = IFxStateSender(_fxRoot);\\n    }\\n\\n    // set fxChildTunnel if not set already\\n    function setFxChildTunnel(address _fxChildTunnel) public {\\n        require(fxChildTunnel == address(0x0), \\\"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\\\");\\n        fxChildTunnel = _fxChildTunnel;\\n    }\\n\\n    /**\\n     * @notice Send bytes message to Child Tunnel\\n     * @param message bytes message that will be sent to Child Tunnel\\n     * some message examples -\\n     *   abi.encode(tokenId);\\n     *   abi.encode(tokenId, tokenMetadata);\\n     *   abi.encode(messageType, messageData);\\n     */\\n    function _sendMessageToChild(bytes memory message) internal {\\n        fxRoot.sendMessageToChild(fxChildTunnel, message);\\n    }\\n\\n    function _validateAndExtractMessage(bytes memory inputData) internal returns (bytes memory) {\\n        RLPReader.RLPItem[] memory inputDataRLPList = inputData.toRlpItem().toList();\\n\\n        // checking if exit has already been processed\\n        // unique exit is identified using hash of (blockNumber, branchMask, receiptLogIndex)\\n        bytes32 exitHash =\\n            keccak256(\\n                abi.encodePacked(\\n                    inputDataRLPList[2].toUint(), // blockNumber\\n                    // first 2 nibbles are dropped while generating nibble array\\n                    // this allows branch masks that are valid but bypass exitHash check (changing first 2 nibbles only)\\n                    // so converting to nibble array and then hashing it\\n                    MerklePatriciaProof._getNibbleArray(inputDataRLPList[8].toBytes()), // branchMask\\n                    inputDataRLPList[9].toUint() // receiptLogIndex\\n                )\\n            );\\n        require(processedExits[exitHash] == false, \\\"FxRootTunnel: EXIT_ALREADY_PROCESSED\\\");\\n        processedExits[exitHash] = true;\\n\\n        RLPReader.RLPItem[] memory receiptRLPList = inputDataRLPList[6].toBytes().toRlpItem().toList();\\n        RLPReader.RLPItem memory logRLP =\\n            receiptRLPList[3].toList()[\\n                inputDataRLPList[9].toUint() // receiptLogIndex\\n            ];\\n\\n        RLPReader.RLPItem[] memory logRLPList = logRLP.toList();\\n\\n        // check child tunnel\\n        require(fxChildTunnel == RLPReader.toAddress(logRLPList[0]), \\\"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\\\");\\n\\n        // verify receipt inclusion\\n        require(\\n            MerklePatriciaProof.verify(\\n                inputDataRLPList[6].toBytes(), // receipt\\n                inputDataRLPList[8].toBytes(), // branchMask\\n                inputDataRLPList[7].toBytes(), // receiptProof\\n                bytes32(inputDataRLPList[5].toUint()) // receiptRoot\\n            ),\\n            \\\"FxRootTunnel: INVALID_RECEIPT_PROOF\\\"\\n        );\\n\\n        // verify checkpoint inclusion\\n        _checkBlockMembershipInCheckpoint(\\n            inputDataRLPList[2].toUint(), // blockNumber\\n            inputDataRLPList[3].toUint(), // blockTime\\n            bytes32(inputDataRLPList[4].toUint()), // txRoot\\n            bytes32(inputDataRLPList[5].toUint()), // receiptRoot\\n            inputDataRLPList[0].toUint(), // headerNumber\\n            inputDataRLPList[1].toBytes() // blockProof\\n        );\\n\\n        RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics\\n\\n        require(\\n            bytes32(logTopicRLPList[0].toUint()) == SEND_MESSAGE_EVENT_SIG, // topic0 is event sig\\n            \\\"FxRootTunnel: INVALID_SIGNATURE\\\"\\n        );\\n\\n        // received message data\\n        bytes memory receivedData = logRLPList[2].toBytes();\\n        bytes memory message = abi.decode(receivedData, (bytes)); // event decodes params again, so decoding bytes to get message\\n        return message;\\n    }\\n\\n    function _checkBlockMembershipInCheckpoint(\\n        uint256 blockNumber,\\n        uint256 blockTime,\\n        bytes32 txRoot,\\n        bytes32 receiptRoot,\\n        uint256 headerNumber,\\n        bytes memory blockProof\\n    ) private view returns (uint256) {\\n        (bytes32 headerRoot, uint256 startBlock, , uint256 createdAt, ) = checkpointManager.headerBlocks(headerNumber);\\n\\n        require(\\n            keccak256(abi.encodePacked(blockNumber, blockTime, txRoot, receiptRoot)).checkMembership(\\n                blockNumber - startBlock,\\n                headerRoot,\\n                blockProof\\n            ),\\n            \\\"FxRootTunnel: INVALID_HEADER\\\"\\n        );\\n        return createdAt;\\n    }\\n\\n    /**\\n     * @notice receive message from  L2 to L1, validated by proof\\n     * @dev This function verifies if the transaction actually happened on child chain\\n     *\\n     * @param inputData RLP encoded data of the reference tx containing following list of fields\\n     *  0 - headerNumber - Checkpoint header block number containing the reference tx\\n     *  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root\\n     *  2 - blockNumber - Block number containing the reference tx on child chain\\n     *  3 - blockTime - Reference tx block time\\n     *  4 - txRoot - Transactions root of block\\n     *  5 - receiptRoot - Receipts root of block\\n     *  6 - receipt - Receipt of the reference transaction\\n     *  7 - receiptProof - Merkle proof of the reference receipt\\n     *  8 - branchMask - 32 bits denoting the path of receipt in merkle tree\\n     *  9 - receiptLogIndex - Log Index to read from the receipt\\n     */\\n    function receiveMessage(bytes memory inputData) public virtual {\\n        bytes memory message = _validateAndExtractMessage(inputData);\\n        _processMessageFromChild(message);\\n    }\\n\\n    /**\\n     * @notice Process message received from Child Tunnel\\n     * @dev function needs to be implemented to handle message as per requirement\\n     * This is called by onStateReceive function.\\n     * Since it is called via a system call, any event will not be emitted during its execution.\\n     * @param message bytes message that was sent from Child Tunnel\\n     */\\n    function _processMessageFromChild(bytes memory message) internal virtual;\\n}\\n\",\"keccak256\":\"0xc49c1d728e24bec46f6f8ca2bbb65a507eb4275e8da746a78e21416bb6f6a046\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 1250,
                                "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                "label": "headerBlocks",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_mapping(t_uint256,t_struct(HeaderBlock)1244_storage)"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_mapping(t_uint256,t_struct(HeaderBlock)1244_storage)": {
                                "encoding": "mapping",
                                "key": "t_uint256",
                                "label": "mapping(uint256 => struct ICheckpointManager.HeaderBlock)",
                                "numberOfBytes": "32",
                                "value": "t_struct(HeaderBlock)1244_storage"
                            },
                            "t_struct(HeaderBlock)1244_storage": {
                                "encoding": "inplace",
                                "label": "struct ICheckpointManager.HeaderBlock",
                                "members": [
                                    {
                                        "astId": 1235,
                                        "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                        "label": "root",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_bytes32"
                                    },
                                    {
                                        "astId": 1237,
                                        "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                        "label": "start",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_uint256"
                                    },
                                    {
                                        "astId": 1239,
                                        "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                        "label": "end",
                                        "offset": 0,
                                        "slot": "2",
                                        "type": "t_uint256"
                                    },
                                    {
                                        "astId": 1241,
                                        "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                        "label": "createdAt",
                                        "offset": 0,
                                        "slot": "3",
                                        "type": "t_uint256"
                                    },
                                    {
                                        "astId": 1243,
                                        "contract": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol:ICheckpointManager",
                                        "label": "proposer",
                                        "offset": 0,
                                        "slot": "4",
                                        "type": "t_address"
                                    }
                                ],
                                "numberOfBytes": "160"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "headerBlocks(uint256)": {
                                "notice": "mapping of checkpoint header numbers to block details"
                            }
                        },
                        "version": 1
                    }
                },
                "IFxStateSender": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_receiver",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "sendMessageToChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "sendMessageToChild(address,bytes)": "b4720477"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":\"IFxStateSender\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/lib/Merkle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nlibrary Merkle {\\n    function checkMembership(\\n        bytes32 leaf,\\n        uint256 index,\\n        bytes32 rootHash,\\n        bytes memory proof\\n    ) internal pure returns (bool) {\\n        require(proof.length % 32 == 0, \\\"Invalid proof length\\\");\\n        uint256 proofHeight = proof.length / 32;\\n        // Proof of size n means, height of the tree is n+1.\\n        // In a tree of height n+1, max #leafs possible is 2 ^ n\\n        require(index < 2**proofHeight, \\\"Leaf index is too big\\\");\\n\\n        bytes32 proofElement;\\n        bytes32 computedHash = leaf;\\n        for (uint256 i = 32; i <= proof.length; i += 32) {\\n            assembly {\\n                proofElement := mload(add(proof, i))\\n            }\\n\\n            if (index % 2 == 0) {\\n                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\\n            } else {\\n                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\\n            }\\n\\n            index = index / 2;\\n        }\\n        return computedHash == rootHash;\\n    }\\n}\\n\",\"keccak256\":\"0xb4b25515352f860f14f2382ab898120218ccc3122458e621b102ce959f884b54\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/MerklePatriciaProof.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport { RLPReader } from \\\"./RLPReader.sol\\\";\\n\\nlibrary MerklePatriciaProof {\\n    /*\\n     * @dev Verifies a merkle patricia proof.\\n     * @param value The terminating value in the trie.\\n     * @param encodedPath The path in the trie leading to value.\\n     * @param rlpParentNodes The rlp encoded stack of nodes.\\n     * @param root The root hash of the trie.\\n     * @return The boolean validity of the proof.\\n     */\\n    function verify(\\n        bytes memory value,\\n        bytes memory encodedPath,\\n        bytes memory rlpParentNodes,\\n        bytes32 root\\n    ) internal pure returns (bool proofValidity) {\\n        RLPReader.RLPItem memory item = RLPReader.toRlpItem(rlpParentNodes);\\n        RLPReader.RLPItem[] memory parentNodes = RLPReader.toList(item);\\n\\n        bytes memory currentNode;\\n        RLPReader.RLPItem[] memory currentNodeList;\\n\\n        bytes32 nodeKey = root;\\n        uint256 pathPtr = 0;\\n\\n        bytes memory path = _getNibbleArray(encodedPath);\\n        if (path.length == 0) {\\n            return false;\\n        }\\n\\n        for (uint256 i = 0; i < parentNodes.length; i++) {\\n            if (pathPtr > path.length) {\\n                return false;\\n            }\\n\\n            currentNode = RLPReader.toRlpBytes(parentNodes[i]);\\n            if (nodeKey != keccak256(currentNode)) {\\n                return false;\\n            }\\n            currentNodeList = RLPReader.toList(parentNodes[i]);\\n\\n            if (currentNodeList.length == 17) {\\n                if (pathPtr == path.length) {\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[16])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                uint8 nextPathNibble = uint8(path[pathPtr]);\\n                if (nextPathNibble > 16) {\\n                    return false;\\n                }\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[nextPathNibble]));\\n                pathPtr += 1;\\n            } else if (currentNodeList.length == 2) {\\n                uint256 traversed = _nibblesToTraverse(RLPReader.toBytes(currentNodeList[0]), path, pathPtr);\\n                if (pathPtr + traversed == path.length) {\\n                    //leaf node\\n                    if (keccak256(RLPReader.toBytes(currentNodeList[1])) == keccak256(value)) {\\n                        return true;\\n                    } else {\\n                        return false;\\n                    }\\n                }\\n\\n                //extension node\\n                if (traversed == 0) {\\n                    return false;\\n                }\\n\\n                pathPtr += traversed;\\n                nodeKey = bytes32(RLPReader.toUintStrict(currentNodeList[1]));\\n            } else {\\n                return false;\\n            }\\n        }\\n    }\\n\\n    function _nibblesToTraverse(\\n        bytes memory encodedPartialPath,\\n        bytes memory path,\\n        uint256 pathPtr\\n    ) private pure returns (uint256) {\\n        uint256 len = 0;\\n        // encodedPartialPath has elements that are each two hex characters (1 byte), but partialPath\\n        // and slicedPath have elements that are each one hex character (1 nibble)\\n        bytes memory partialPath = _getNibbleArray(encodedPartialPath);\\n        bytes memory slicedPath = new bytes(partialPath.length);\\n\\n        // pathPtr counts nibbles in path\\n        // partialPath.length is a number of nibbles\\n        for (uint256 i = pathPtr; i < pathPtr + partialPath.length; i++) {\\n            bytes1 pathNibble = path[i];\\n            slicedPath[i - pathPtr] = pathNibble;\\n        }\\n\\n        if (keccak256(partialPath) == keccak256(slicedPath)) {\\n            len = partialPath.length;\\n        } else {\\n            len = 0;\\n        }\\n        return len;\\n    }\\n\\n    // bytes b must be hp encoded\\n    function _getNibbleArray(bytes memory b) internal pure returns (bytes memory) {\\n        bytes memory nibbles = \\\"\\\";\\n        if (b.length > 0) {\\n            uint8 offset;\\n            uint8 hpNibble = uint8(_getNthNibbleOfBytes(0, b));\\n            if (hpNibble == 1 || hpNibble == 3) {\\n                nibbles = new bytes(b.length * 2 - 1);\\n                bytes1 oddNibble = _getNthNibbleOfBytes(1, b);\\n                nibbles[0] = oddNibble;\\n                offset = 1;\\n            } else {\\n                nibbles = new bytes(b.length * 2 - 2);\\n                offset = 0;\\n            }\\n\\n            for (uint256 i = offset; i < nibbles.length; i++) {\\n                nibbles[i] = _getNthNibbleOfBytes(i - offset + 2, b);\\n            }\\n        }\\n        return nibbles;\\n    }\\n\\n    function _getNthNibbleOfBytes(uint256 n, bytes memory str) private pure returns (bytes1) {\\n        return bytes1(n % 2 == 0 ? uint8(str[n / 2]) / 0x10 : uint8(str[n / 2]) % 0x10);\\n    }\\n}\\n\",\"keccak256\":\"0x97368bbde86aa76fee466f89209daa01da1365d8b9a09c4123419fd033dbcb49\",\"license\":\"MIT\"},\"contracts/external/polygon/lib/RLPReader.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied mostly from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal.\\n// There are two modifications such that this contract compiles with Solidity v8:\\n// - Line 86: cannot convert directly from uint256 --> address\\n// - Line 226: cannot rely on wrapping arithmetic, must explicitly catch underflow/overflow with an unchecked{...}\\n//   statement\\n// More details on Solidity v0.8.0 breaking changes here:\\n// https://docs.soliditylang.org/en/v0.8.4/080-breaking-changes.html#new-restrictions\\npragma solidity ^0.8.0;\\n\\nlibrary RLPReader {\\n    uint8 constant STRING_SHORT_START = 0x80;\\n    uint8 constant STRING_LONG_START = 0xb8;\\n    uint8 constant LIST_SHORT_START = 0xc0;\\n    uint8 constant LIST_LONG_START = 0xf8;\\n    uint8 constant WORD_SIZE = 32;\\n\\n    struct RLPItem {\\n        uint256 len;\\n        uint256 memPtr;\\n    }\\n\\n    /*\\n     * @param item RLP encoded bytes\\n     */\\n    function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {\\n        require(item.length > 0, \\\"RLPReader: INVALID_BYTES_LENGTH\\\");\\n        uint256 memPtr;\\n        assembly {\\n            memPtr := add(item, 0x20)\\n        }\\n\\n        return RLPItem(item.length, memPtr);\\n    }\\n\\n    /*\\n     * @param item RLP encoded list in bytes\\n     */\\n    function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {\\n        require(isList(item), \\\"RLPReader: ITEM_NOT_LIST\\\");\\n\\n        uint256 items = numItems(item);\\n        RLPItem[] memory result = new RLPItem[](items);\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: LIST_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 dataLen;\\n        for (uint256 i = 0; i < items; i++) {\\n            dataLen = _itemLength(memPtr);\\n            result[i] = RLPItem(dataLen, memPtr);\\n            memPtr = memPtr + dataLen;\\n        }\\n\\n        return result;\\n    }\\n\\n    // @return indicator whether encoded payload is a list. negate this function call for isData.\\n    function isList(RLPItem memory item) internal pure returns (bool) {\\n        uint8 byte0;\\n        uint256 memPtr = item.memPtr;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < LIST_SHORT_START) return false;\\n        return true;\\n    }\\n\\n    /** RLPItem conversions into data types **/\\n\\n    // @returns raw rlp encoding in bytes\\n    function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        bytes memory result = new bytes(item.len);\\n\\n        uint256 ptr;\\n        assembly {\\n            ptr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr, ptr, item.len);\\n        return result;\\n    }\\n\\n    function toAddress(RLPItem memory item) internal pure returns (address) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_ADDRESS\\\");\\n        // 1 byte for the length prefix\\n        require(item.len == 21, \\\"RLPReader: INVALID_ADDRESS_LENGTH\\\");\\n\\n        return address(uint160(toUint(item)));\\n    }\\n\\n    function toUint(RLPItem memory item) internal pure returns (uint256) {\\n        require(!isList(item), \\\"RLPReader: DECODING_LIST_AS_UINT\\\");\\n        require(item.len <= 33, \\\"RLPReader: INVALID_UINT_LENGTH\\\");\\n\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_DECODED_LENGTH_MISMATCH\\\");\\n\\n        uint256 offset = _payloadOffset(item.memPtr);\\n        uint256 len = item.len - offset;\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + offset;\\n        assembly {\\n            result := mload(memPtr)\\n\\n            // shfit to the correct location if neccesary\\n            if lt(len, 32) {\\n                result := div(result, exp(256, sub(32, len)))\\n            }\\n        }\\n\\n        return result;\\n    }\\n\\n    // enforces 32 byte length\\n    function toUintStrict(RLPItem memory item) internal pure returns (uint256) {\\n        uint256 itemLength = _itemLength(item.memPtr);\\n        require(itemLength == item.len, \\\"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\\\");\\n        // one byte prefix\\n        require(item.len == 33, \\\"RLPReader: INVALID_UINT_STRICT_LENGTH\\\");\\n\\n        uint256 result;\\n        uint256 memPtr = item.memPtr + 1;\\n        assembly {\\n            result := mload(memPtr)\\n        }\\n\\n        return result;\\n    }\\n\\n    function toBytes(RLPItem memory item) internal pure returns (bytes memory) {\\n        uint256 listLength = _itemLength(item.memPtr);\\n        require(listLength == item.len, \\\"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\\\");\\n        uint256 offset = _payloadOffset(item.memPtr);\\n\\n        uint256 len = item.len - offset; // data length\\n        bytes memory result = new bytes(len);\\n\\n        uint256 destPtr;\\n        assembly {\\n            destPtr := add(0x20, result)\\n        }\\n\\n        copy(item.memPtr + offset, destPtr, len);\\n        return result;\\n    }\\n\\n    /*\\n     * Private Helpers\\n     */\\n\\n    // @return number of payload items inside an encoded list.\\n    function numItems(RLPItem memory item) private pure returns (uint256) {\\n        // add `isList` check if `item` is expected to be passsed without a check from calling function\\n        // require(isList(item), \\\"RLPReader: NUM_ITEMS_NOT_LIST\\\");\\n\\n        uint256 count = 0;\\n        uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);\\n        uint256 endPtr = item.memPtr + item.len;\\n        while (currPtr < endPtr) {\\n            currPtr = currPtr + _itemLength(currPtr); // skip over an item\\n            require(currPtr <= endPtr, \\\"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\\\");\\n            count++;\\n        }\\n\\n        return count;\\n    }\\n\\n    // @return entire rlp item byte length\\n    function _itemLength(uint256 memPtr) private pure returns (uint256) {\\n        uint256 itemLen;\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) itemLen = 1;\\n        else if (byte0 < STRING_LONG_START) itemLen = byte0 - STRING_SHORT_START + 1;\\n        else if (byte0 < LIST_SHORT_START) {\\n            assembly {\\n                let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is\\n                memPtr := add(memPtr, 1) // skip over the first byte\\n\\n                /* 32 byte word size */\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        } else if (byte0 < LIST_LONG_START) {\\n            itemLen = byte0 - LIST_SHORT_START + 1;\\n        } else {\\n            assembly {\\n                let byteLen := sub(byte0, 0xf7)\\n                memPtr := add(memPtr, 1)\\n\\n                let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length\\n                itemLen := add(dataLen, add(byteLen, 1))\\n            }\\n        }\\n\\n        return itemLen;\\n    }\\n\\n    // @return number of bytes until the data\\n    function _payloadOffset(uint256 memPtr) private pure returns (uint256) {\\n        uint256 byte0;\\n        assembly {\\n            byte0 := byte(0, mload(memPtr))\\n        }\\n\\n        if (byte0 < STRING_SHORT_START) return 0;\\n        else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) return 1;\\n        else if (byte0 < LIST_SHORT_START)\\n            // being explicit\\n            return byte0 - (STRING_LONG_START - 1) + 1;\\n        else return byte0 - (LIST_LONG_START - 1) + 1;\\n    }\\n\\n    /*\\n     * @param src Pointer to source\\n     * @param dest Pointer to destination\\n     * @param len Amount of memory to copy from the source\\n     */\\n    function copy(\\n        uint256 src,\\n        uint256 dest,\\n        uint256 len\\n    ) private pure {\\n        if (len == 0) return;\\n\\n        // copy as many word sizes as possible\\n        for (; len >= WORD_SIZE; len -= WORD_SIZE) {\\n            assembly {\\n                mstore(dest, mload(src))\\n            }\\n\\n            src += WORD_SIZE;\\n            dest += WORD_SIZE;\\n        }\\n\\n        unchecked {\\n            // left over bytes. Mask is used to remove unwanted bytes from the word\\n            uint256 mask = 256**(WORD_SIZE - len) - 1;\\n            assembly {\\n                let srcpart := and(mload(src), not(mask)) // zero out src\\n                let destpart := and(mload(dest), mask) // retrieve the bytes\\n                mstore(dest, or(destpart, srcpart))\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfb5c3e814176470a6674c8268fe308f0bc725578d165aafbfb3cdbb72d0cf600\",\"license\":\"MIT\"},\"contracts/external/polygon/tunnel/FxBaseRootTunnel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\nimport \\\"../lib/RLPReader.sol\\\";\\nimport \\\"../lib/MerklePatriciaProof.sol\\\";\\nimport \\\"../lib/Merkle.sol\\\";\\n\\ninterface IFxStateSender {\\n    function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\ncontract ICheckpointManager {\\n    struct HeaderBlock {\\n        bytes32 root;\\n        uint256 start;\\n        uint256 end;\\n        uint256 createdAt;\\n        address proposer;\\n    }\\n\\n    /**\\n     * @notice mapping of checkpoint header numbers to block details\\n     * @dev These checkpoints are submited by plasma contracts\\n     */\\n    mapping(uint256 => HeaderBlock) public headerBlocks;\\n}\\n\\nabstract contract FxBaseRootTunnel {\\n    using RLPReader for bytes;\\n    using RLPReader for RLPReader.RLPItem;\\n    using Merkle for bytes32;\\n\\n    // keccak256(MessageSent(bytes))\\n    bytes32 public constant SEND_MESSAGE_EVENT_SIG = 0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036;\\n\\n    // state sender contract\\n    IFxStateSender public fxRoot;\\n    // root chain manager\\n    ICheckpointManager public checkpointManager;\\n    // child tunnel contract which receives and sends messages\\n    address public fxChildTunnel;\\n\\n    // storage to avoid duplicate exits\\n    mapping(bytes32 => bool) public processedExits;\\n\\n    constructor(address _checkpointManager, address _fxRoot) {\\n        checkpointManager = ICheckpointManager(_checkpointManager);\\n        fxRoot = IFxStateSender(_fxRoot);\\n    }\\n\\n    // set fxChildTunnel if not set already\\n    function setFxChildTunnel(address _fxChildTunnel) public {\\n        require(fxChildTunnel == address(0x0), \\\"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\\\");\\n        fxChildTunnel = _fxChildTunnel;\\n    }\\n\\n    /**\\n     * @notice Send bytes message to Child Tunnel\\n     * @param message bytes message that will be sent to Child Tunnel\\n     * some message examples -\\n     *   abi.encode(tokenId);\\n     *   abi.encode(tokenId, tokenMetadata);\\n     *   abi.encode(messageType, messageData);\\n     */\\n    function _sendMessageToChild(bytes memory message) internal {\\n        fxRoot.sendMessageToChild(fxChildTunnel, message);\\n    }\\n\\n    function _validateAndExtractMessage(bytes memory inputData) internal returns (bytes memory) {\\n        RLPReader.RLPItem[] memory inputDataRLPList = inputData.toRlpItem().toList();\\n\\n        // checking if exit has already been processed\\n        // unique exit is identified using hash of (blockNumber, branchMask, receiptLogIndex)\\n        bytes32 exitHash =\\n            keccak256(\\n                abi.encodePacked(\\n                    inputDataRLPList[2].toUint(), // blockNumber\\n                    // first 2 nibbles are dropped while generating nibble array\\n                    // this allows branch masks that are valid but bypass exitHash check (changing first 2 nibbles only)\\n                    // so converting to nibble array and then hashing it\\n                    MerklePatriciaProof._getNibbleArray(inputDataRLPList[8].toBytes()), // branchMask\\n                    inputDataRLPList[9].toUint() // receiptLogIndex\\n                )\\n            );\\n        require(processedExits[exitHash] == false, \\\"FxRootTunnel: EXIT_ALREADY_PROCESSED\\\");\\n        processedExits[exitHash] = true;\\n\\n        RLPReader.RLPItem[] memory receiptRLPList = inputDataRLPList[6].toBytes().toRlpItem().toList();\\n        RLPReader.RLPItem memory logRLP =\\n            receiptRLPList[3].toList()[\\n                inputDataRLPList[9].toUint() // receiptLogIndex\\n            ];\\n\\n        RLPReader.RLPItem[] memory logRLPList = logRLP.toList();\\n\\n        // check child tunnel\\n        require(fxChildTunnel == RLPReader.toAddress(logRLPList[0]), \\\"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\\\");\\n\\n        // verify receipt inclusion\\n        require(\\n            MerklePatriciaProof.verify(\\n                inputDataRLPList[6].toBytes(), // receipt\\n                inputDataRLPList[8].toBytes(), // branchMask\\n                inputDataRLPList[7].toBytes(), // receiptProof\\n                bytes32(inputDataRLPList[5].toUint()) // receiptRoot\\n            ),\\n            \\\"FxRootTunnel: INVALID_RECEIPT_PROOF\\\"\\n        );\\n\\n        // verify checkpoint inclusion\\n        _checkBlockMembershipInCheckpoint(\\n            inputDataRLPList[2].toUint(), // blockNumber\\n            inputDataRLPList[3].toUint(), // blockTime\\n            bytes32(inputDataRLPList[4].toUint()), // txRoot\\n            bytes32(inputDataRLPList[5].toUint()), // receiptRoot\\n            inputDataRLPList[0].toUint(), // headerNumber\\n            inputDataRLPList[1].toBytes() // blockProof\\n        );\\n\\n        RLPReader.RLPItem[] memory logTopicRLPList = logRLPList[1].toList(); // topics\\n\\n        require(\\n            bytes32(logTopicRLPList[0].toUint()) == SEND_MESSAGE_EVENT_SIG, // topic0 is event sig\\n            \\\"FxRootTunnel: INVALID_SIGNATURE\\\"\\n        );\\n\\n        // received message data\\n        bytes memory receivedData = logRLPList[2].toBytes();\\n        bytes memory message = abi.decode(receivedData, (bytes)); // event decodes params again, so decoding bytes to get message\\n        return message;\\n    }\\n\\n    function _checkBlockMembershipInCheckpoint(\\n        uint256 blockNumber,\\n        uint256 blockTime,\\n        bytes32 txRoot,\\n        bytes32 receiptRoot,\\n        uint256 headerNumber,\\n        bytes memory blockProof\\n    ) private view returns (uint256) {\\n        (bytes32 headerRoot, uint256 startBlock, , uint256 createdAt, ) = checkpointManager.headerBlocks(headerNumber);\\n\\n        require(\\n            keccak256(abi.encodePacked(blockNumber, blockTime, txRoot, receiptRoot)).checkMembership(\\n                blockNumber - startBlock,\\n                headerRoot,\\n                blockProof\\n            ),\\n            \\\"FxRootTunnel: INVALID_HEADER\\\"\\n        );\\n        return createdAt;\\n    }\\n\\n    /**\\n     * @notice receive message from  L2 to L1, validated by proof\\n     * @dev This function verifies if the transaction actually happened on child chain\\n     *\\n     * @param inputData RLP encoded data of the reference tx containing following list of fields\\n     *  0 - headerNumber - Checkpoint header block number containing the reference tx\\n     *  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root\\n     *  2 - blockNumber - Block number containing the reference tx on child chain\\n     *  3 - blockTime - Reference tx block time\\n     *  4 - txRoot - Transactions root of block\\n     *  5 - receiptRoot - Receipts root of block\\n     *  6 - receipt - Receipt of the reference transaction\\n     *  7 - receiptProof - Merkle proof of the reference receipt\\n     *  8 - branchMask - 32 bits denoting the path of receipt in merkle tree\\n     *  9 - receiptLogIndex - Log Index to read from the receipt\\n     */\\n    function receiveMessage(bytes memory inputData) public virtual {\\n        bytes memory message = _validateAndExtractMessage(inputData);\\n        _processMessageFromChild(message);\\n    }\\n\\n    /**\\n     * @notice Process message received from Child Tunnel\\n     * @dev function needs to be implemented to handle message as per requirement\\n     * This is called by onStateReceive function.\\n     * Since it is called via a system call, any event will not be emitted during its execution.\\n     * @param message bytes message that was sent from Child Tunnel\\n     */\\n    function _processMessageFromChild(bytes memory message) internal virtual;\\n}\\n\",\"keccak256\":\"0xc49c1d728e24bec46f6f8ca2bbb65a507eb4275e8da746a78e21416bb6f6a046\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            }
        },
        "sources": {
            "contracts/external/polygon/lib/Merkle.sol": {
                "ast": {
                    "absolutePath": "contracts/external/polygon/lib/Merkle.sol",
                    "exportedSymbols": {
                        "Merkle": [
                            102
                        ]
                    },
                    "id": 103,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "180:23:0"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Merkle",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "fullyImplemented": true,
                            "id": 102,
                            "linearizedBaseContracts": [
                                102
                            ],
                            "name": "Merkle",
                            "nameLocation": "213:6:0",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 100,
                                        "nodeType": "Block",
                                        "src": "385:859:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 20,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 18,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 15,
                                                                        "name": "proof",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 9,
                                                                        "src": "403:5:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 16,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "403:12:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "%",
                                                                "rightExpression": {
                                                                    "hexValue": "3332",
                                                                    "id": 17,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "418:2:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_32_by_1",
                                                                        "typeString": "int_const 32"
                                                                    },
                                                                    "value": "32"
                                                                },
                                                                "src": "403:17:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 19,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "424:1:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "403:22:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e76616c69642070726f6f66206c656e677468",
                                                            "id": 21,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "427:22:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_a384685b2d9864ca58af3cdeb11675a5eb31234b321579291672bb93c38d256c",
                                                                "typeString": "literal_string \"Invalid proof length\""
                                                            },
                                                            "value": "Invalid proof length"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_a384685b2d9864ca58af3cdeb11675a5eb31234b321579291672bb93c38d256c",
                                                                "typeString": "literal_string \"Invalid proof length\""
                                                            }
                                                        ],
                                                        "id": 14,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "395:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 22,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "395:55:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 23,
                                                "nodeType": "ExpressionStatement",
                                                "src": "395:55:0"
                                            },
                                            {
                                                "assignments": [
                                                    25
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 25,
                                                        "mutability": "mutable",
                                                        "name": "proofHeight",
                                                        "nameLocation": "468:11:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 100,
                                                        "src": "460:19:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 24,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "460:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 30,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 29,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 26,
                                                            "name": "proof",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9,
                                                            "src": "482:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 27,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "482:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "hexValue": "3332",
                                                        "id": 28,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "497:2:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "src": "482:17:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "460:39:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 36,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 32,
                                                                "name": "index",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5,
                                                                "src": "643:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 35,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "hexValue": "32",
                                                                    "id": 33,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "651:1:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_2_by_1",
                                                                        "typeString": "int_const 2"
                                                                    },
                                                                    "value": "2"
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "**",
                                                                "rightExpression": {
                                                                    "id": 34,
                                                                    "name": "proofHeight",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 25,
                                                                    "src": "654:11:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "651:14:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "643:22:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4c65616620696e64657820697320746f6f20626967",
                                                            "id": 37,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "667:23:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_a93d72abfb9ed65892e9dea7aa76fdb1003bad3c2be9fdc6e43aa17d2648b99c",
                                                                "typeString": "literal_string \"Leaf index is too big\""
                                                            },
                                                            "value": "Leaf index is too big"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_a93d72abfb9ed65892e9dea7aa76fdb1003bad3c2be9fdc6e43aa17d2648b99c",
                                                                "typeString": "literal_string \"Leaf index is too big\""
                                                            }
                                                        ],
                                                        "id": 31,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "635:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 38,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "635:56:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 39,
                                                "nodeType": "ExpressionStatement",
                                                "src": "635:56:0"
                                            },
                                            {
                                                "assignments": [
                                                    41
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 41,
                                                        "mutability": "mutable",
                                                        "name": "proofElement",
                                                        "nameLocation": "710:12:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 100,
                                                        "src": "702:20:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 40,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "702:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 42,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "702:20:0"
                                            },
                                            {
                                                "assignments": [
                                                    44
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 44,
                                                        "mutability": "mutable",
                                                        "name": "computedHash",
                                                        "nameLocation": "740:12:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 100,
                                                        "src": "732:20:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 43,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "732:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 46,
                                                "initialValue": {
                                                    "id": 45,
                                                    "name": "leaf",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3,
                                                    "src": "755:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "732:27:0"
                                            },
                                            {
                                                "body": {
                                                    "id": 94,
                                                    "nodeType": "Block",
                                                    "src": "818:379:0",
                                                    "statements": [
                                                        {
                                                            "AST": {
                                                                "nodeType": "YulBlock",
                                                                "src": "841:68:0",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "859:36:0",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "proof",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "885:5:0"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "892:1:0"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "881:3:0"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "881:13:0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mload",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "875:5:0"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "875:20:0"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "proofElement",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "859:12:0"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "evmVersion": "london",
                                                            "externalReferences": [
                                                                {
                                                                    "declaration": 48,
                                                                    "isOffset": false,
                                                                    "isSlot": false,
                                                                    "src": "892:1:0",
                                                                    "valueSize": 1
                                                                },
                                                                {
                                                                    "declaration": 9,
                                                                    "isOffset": false,
                                                                    "isSlot": false,
                                                                    "src": "885:5:0",
                                                                    "valueSize": 1
                                                                },
                                                                {
                                                                    "declaration": 41,
                                                                    "isOffset": false,
                                                                    "isSlot": false,
                                                                    "src": "859:12:0",
                                                                    "valueSize": 1
                                                                }
                                                            ],
                                                            "id": 59,
                                                            "nodeType": "InlineAssembly",
                                                            "src": "832:77:0"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 64,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 62,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 60,
                                                                        "name": "index",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5,
                                                                        "src": "927:5:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "%",
                                                                    "rightExpression": {
                                                                        "hexValue": "32",
                                                                        "id": 61,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "935:1:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_2_by_1",
                                                                            "typeString": "int_const 2"
                                                                        },
                                                                        "value": "2"
                                                                    },
                                                                    "src": "927:9:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 63,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "940:1:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "927:14:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 86,
                                                                "nodeType": "Block",
                                                                "src": "1052:103:0",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 84,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 76,
                                                                                "name": "computedHash",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 44,
                                                                                "src": "1070:12:0",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 80,
                                                                                                "name": "proofElement",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 41,
                                                                                                "src": "1112:12:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            {
                                                                                                "id": 81,
                                                                                                "name": "computedHash",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 44,
                                                                                                "src": "1126:12:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 78,
                                                                                                "name": "abi",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": -1,
                                                                                                "src": "1095:3:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_magic_abi",
                                                                                                    "typeString": "abi"
                                                                                                }
                                                                                            },
                                                                                            "id": 79,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "encodePacked",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "src": "1095:16:0",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                                                "typeString": "function () pure returns (bytes memory)"
                                                                                            }
                                                                                        },
                                                                                        "id": 82,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "1095:44:0",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    ],
                                                                                    "id": 77,
                                                                                    "name": "keccak256",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": -8,
                                                                                    "src": "1085:9:0",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                    }
                                                                                },
                                                                                "id": 83,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "1085:55:0",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "src": "1070:70:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        "id": 85,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "1070:70:0"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 87,
                                                            "nodeType": "IfStatement",
                                                            "src": "923:232:0",
                                                            "trueBody": {
                                                                "id": 75,
                                                                "nodeType": "Block",
                                                                "src": "943:103:0",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 73,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 65,
                                                                                "name": "computedHash",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 44,
                                                                                "src": "961:12:0",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 69,
                                                                                                "name": "computedHash",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 44,
                                                                                                "src": "1003:12:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            {
                                                                                                "id": 70,
                                                                                                "name": "proofElement",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 41,
                                                                                                "src": "1017:12:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 67,
                                                                                                "name": "abi",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": -1,
                                                                                                "src": "986:3:0",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_magic_abi",
                                                                                                    "typeString": "abi"
                                                                                                }
                                                                                            },
                                                                                            "id": 68,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "encodePacked",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "src": "986:16:0",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                                                "typeString": "function () pure returns (bytes memory)"
                                                                                            }
                                                                                        },
                                                                                        "id": 71,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "986:44:0",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    ],
                                                                                    "id": 66,
                                                                                    "name": "keccak256",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": -8,
                                                                                    "src": "976:9:0",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                    }
                                                                                },
                                                                                "id": 72,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "976:55:0",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "src": "961:70:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        "id": 74,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "961:70:0"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 92,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 88,
                                                                    "name": "index",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5,
                                                                    "src": "1169:5:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 91,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 89,
                                                                        "name": "index",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5,
                                                                        "src": "1177:5:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "hexValue": "32",
                                                                        "id": 90,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1185:1:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_2_by_1",
                                                                            "typeString": "int_const 2"
                                                                        },
                                                                        "value": "2"
                                                                    },
                                                                    "src": "1177:9:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1169:17:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 93,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1169:17:0"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 54,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 51,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 48,
                                                        "src": "790:1:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 52,
                                                            "name": "proof",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9,
                                                            "src": "795:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 53,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "795:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "790:17:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 95,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        48
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 48,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "782:1:0",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 95,
                                                            "src": "774:9:0",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 47,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "774:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 50,
                                                    "initialValue": {
                                                        "hexValue": "3332",
                                                        "id": 49,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "786:2:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "774:14:0"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 57,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 55,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 48,
                                                            "src": "809:1:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "+=",
                                                        "rightHandSide": {
                                                            "hexValue": "3332",
                                                            "id": 56,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "814:2:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_32_by_1",
                                                                "typeString": "int_const 32"
                                                            },
                                                            "value": "32"
                                                        },
                                                        "src": "809:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 58,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "809:7:0"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "769:428:0"
                                            },
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 98,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 96,
                                                        "name": "computedHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 44,
                                                        "src": "1213:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "id": 97,
                                                        "name": "rootHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7,
                                                        "src": "1229:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "1213:24:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 13,
                                                "id": 99,
                                                "nodeType": "Return",
                                                "src": "1206:31:0"
                                            }
                                        ]
                                    },
                                    "id": 101,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "checkMembership",
                                    "nameLocation": "235:15:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3,
                                                "mutability": "mutable",
                                                "name": "leaf",
                                                "nameLocation": "268:4:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 101,
                                                "src": "260:12:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 2,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "260:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5,
                                                "mutability": "mutable",
                                                "name": "index",
                                                "nameLocation": "290:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 101,
                                                "src": "282:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "282:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7,
                                                "mutability": "mutable",
                                                "name": "rootHash",
                                                "nameLocation": "313:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 101,
                                                "src": "305:16:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "305:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9,
                                                "mutability": "mutable",
                                                "name": "proof",
                                                "nameLocation": "344:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 101,
                                                "src": "331:18:0",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 8,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "331:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "250:105:0"
                                    },
                                    "returnParameters": {
                                        "id": 13,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 12,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 101,
                                                "src": "379:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 11,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "379:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "378:6:0"
                                    },
                                    "scope": 102,
                                    "src": "226:1018:0",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 103,
                            "src": "205:1041:0",
                            "usedErrors": []
                        }
                    ],
                    "src": "180:1067:0"
                },
                "id": 0
            },
            "contracts/external/polygon/lib/MerklePatriciaProof.sol": {
                "ast": {
                    "absolutePath": "contracts/external/polygon/lib/MerklePatriciaProof.sol",
                    "exportedSymbols": {
                        "MerklePatriciaProof": [
                            591
                        ],
                        "RLPReader": [
                            1220
                        ]
                    },
                    "id": 592,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 104,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "180:23:1"
                        },
                        {
                            "absolutePath": "contracts/external/polygon/lib/RLPReader.sol",
                            "file": "./RLPReader.sol",
                            "id": 106,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 592,
                            "sourceUnit": 1221,
                            "src": "205:44:1",
                            "symbolAliases": [
                                {
                                    "foreign": {
                                        "id": 105,
                                        "name": "RLPReader",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "src": "214:9:1",
                                        "typeDescriptions": {}
                                    },
                                    "nameLocation": "-1:-1:-1"
                                }
                            ],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "MerklePatriciaProof",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "fullyImplemented": true,
                            "id": 591,
                            "linearizedBaseContracts": [
                                591
                            ],
                            "name": "MerklePatriciaProof",
                            "nameLocation": "259:19:1",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 355,
                                        "nodeType": "Block",
                                        "src": "809:2230:1",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    123
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 123,
                                                        "mutability": "mutable",
                                                        "name": "item",
                                                        "nameLocation": "844:4:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "819:29:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem"
                                                        },
                                                        "typeName": {
                                                            "id": 122,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 121,
                                                                "name": "RLPReader.RLPItem",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 613,
                                                                "src": "819:17:1"
                                                            },
                                                            "referencedDeclaration": 613,
                                                            "src": "819:17:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 128,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 126,
                                                            "name": "rlpParentNodes",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 112,
                                                            "src": "871:14:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 124,
                                                            "name": "RLPReader",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1220,
                                                            "src": "851:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                "typeString": "type(library RLPReader)"
                                                            }
                                                        },
                                                        "id": 125,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toRlpItem",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 640,
                                                        "src": "851:19:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (bytes memory) pure returns (struct RLPReader.RLPItem memory)"
                                                        }
                                                    },
                                                    "id": 127,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "851:35:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "819:67:1"
                                            },
                                            {
                                                "assignments": [
                                                    134
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 134,
                                                        "mutability": "mutable",
                                                        "name": "parentNodes",
                                                        "nameLocation": "923:11:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "896:38:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 132,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 131,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "896:17:1"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "896:17:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 133,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "896:19:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 139,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 137,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 123,
                                                            "src": "954:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 135,
                                                            "name": "RLPReader",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1220,
                                                            "src": "937:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                "typeString": "type(library RLPReader)"
                                                            }
                                                        },
                                                        "id": 136,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toList",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 739,
                                                        "src": "937:16:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        }
                                                    },
                                                    "id": 138,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "937:22:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "896:63:1"
                                            },
                                            {
                                                "assignments": [
                                                    141
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 141,
                                                        "mutability": "mutable",
                                                        "name": "currentNode",
                                                        "nameLocation": "983:11:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "970:24:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 140,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "970:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 142,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "970:24:1"
                                            },
                                            {
                                                "assignments": [
                                                    148
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 148,
                                                        "mutability": "mutable",
                                                        "name": "currentNodeList",
                                                        "nameLocation": "1031:15:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "1004:42:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 146,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 145,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "1004:17:1"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "1004:17:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 147,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "1004:19:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 149,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1004:42:1"
                                            },
                                            {
                                                "assignments": [
                                                    151
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 151,
                                                        "mutability": "mutable",
                                                        "name": "nodeKey",
                                                        "nameLocation": "1065:7:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "1057:15:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 150,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1057:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 153,
                                                "initialValue": {
                                                    "id": 152,
                                                    "name": "root",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 114,
                                                    "src": "1075:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1057:22:1"
                                            },
                                            {
                                                "assignments": [
                                                    155
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 155,
                                                        "mutability": "mutable",
                                                        "name": "pathPtr",
                                                        "nameLocation": "1097:7:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "1089:15:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 154,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1089:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 157,
                                                "initialValue": {
                                                    "hexValue": "30",
                                                    "id": 156,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1107:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1089:19:1"
                                            },
                                            {
                                                "assignments": [
                                                    159
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 159,
                                                        "mutability": "mutable",
                                                        "name": "path",
                                                        "nameLocation": "1132:4:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 355,
                                                        "src": "1119:17:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 158,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1119:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 163,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 161,
                                                            "name": "encodedPath",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 110,
                                                            "src": "1155:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 160,
                                                        "name": "_getNibbleArray",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 550,
                                                        "src": "1139:15:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 162,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1139:28:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1119:48:1"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 167,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 164,
                                                            "name": "path",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 159,
                                                            "src": "1181:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 165,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "1181:11:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 166,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1196:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1181:16:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 171,
                                                "nodeType": "IfStatement",
                                                "src": "1177:59:1",
                                                "trueBody": {
                                                    "id": 170,
                                                    "nodeType": "Block",
                                                    "src": "1199:37:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "hexValue": "66616c7365",
                                                                "id": 168,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "bool",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1220:5:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "value": "false"
                                                            },
                                                            "functionReturnParameters": 118,
                                                            "id": 169,
                                                            "nodeType": "Return",
                                                            "src": "1213:12:1"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "body": {
                                                    "id": 353,
                                                    "nodeType": "Block",
                                                    "src": "1295:1738:1",
                                                    "statements": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 186,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 183,
                                                                    "name": "pathPtr",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 155,
                                                                    "src": "1313:7:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 184,
                                                                        "name": "path",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 159,
                                                                        "src": "1323:4:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 185,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "1323:11:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1313:21:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 190,
                                                            "nodeType": "IfStatement",
                                                            "src": "1309:72:1",
                                                            "trueBody": {
                                                                "id": 189,
                                                                "nodeType": "Block",
                                                                "src": "1336:45:1",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "hexValue": "66616c7365",
                                                                            "id": 187,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "bool",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1361:5:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            },
                                                                            "value": "false"
                                                                        },
                                                                        "functionReturnParameters": 118,
                                                                        "id": 188,
                                                                        "nodeType": "Return",
                                                                        "src": "1354:12:1"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 198,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 191,
                                                                    "name": "currentNode",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 141,
                                                                    "src": "1395:11:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "baseExpression": {
                                                                                "id": 194,
                                                                                "name": "parentNodes",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 134,
                                                                                "src": "1430:11:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 196,
                                                                            "indexExpression": {
                                                                                "id": 195,
                                                                                "name": "i",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 173,
                                                                                "src": "1442:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "1430:14:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 192,
                                                                            "name": "RLPReader",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1220,
                                                                            "src": "1409:9:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                "typeString": "type(library RLPReader)"
                                                                            }
                                                                        },
                                                                        "id": 193,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toRlpBytes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 797,
                                                                        "src": "1409:20:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 197,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1409:36:1",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "src": "1395:50:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 199,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1395:50:1"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                "id": 204,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 200,
                                                                    "name": "nodeKey",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 151,
                                                                    "src": "1463:7:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 202,
                                                                            "name": "currentNode",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 141,
                                                                            "src": "1484:11:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        ],
                                                                        "id": 201,
                                                                        "name": "keccak256",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -8,
                                                                        "src": "1474:9:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                        }
                                                                    },
                                                                    "id": 203,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1474:22:1",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "src": "1463:33:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 208,
                                                            "nodeType": "IfStatement",
                                                            "src": "1459:84:1",
                                                            "trueBody": {
                                                                "id": 207,
                                                                "nodeType": "Block",
                                                                "src": "1498:45:1",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "hexValue": "66616c7365",
                                                                            "id": 205,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "bool",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1523:5:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            },
                                                                            "value": "false"
                                                                        },
                                                                        "functionReturnParameters": 118,
                                                                        "id": 206,
                                                                        "nodeType": "Return",
                                                                        "src": "1516:12:1"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 216,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 209,
                                                                    "name": "currentNodeList",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 148,
                                                                    "src": "1556:15:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "baseExpression": {
                                                                                "id": 212,
                                                                                "name": "parentNodes",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 134,
                                                                                "src": "1591:11:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 214,
                                                                            "indexExpression": {
                                                                                "id": 213,
                                                                                "name": "i",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 173,
                                                                                "src": "1603:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "1591:14:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 210,
                                                                            "name": "RLPReader",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1220,
                                                                            "src": "1574:9:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                "typeString": "type(library RLPReader)"
                                                                            }
                                                                        },
                                                                        "id": 211,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toList",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 739,
                                                                        "src": "1574:16:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                                        }
                                                                    },
                                                                    "id": 215,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1574:32:1",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                    }
                                                                },
                                                                "src": "1556:50:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                }
                                                            },
                                                            "id": 217,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1556:50:1"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 221,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 218,
                                                                        "name": "currentNodeList",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 148,
                                                                        "src": "1625:15:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 219,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "1625:22:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "hexValue": "3137",
                                                                    "id": 220,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1651:2:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_17_by_1",
                                                                        "typeString": "int_const 17"
                                                                    },
                                                                    "value": "17"
                                                                },
                                                                "src": "1625:28:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 283,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 280,
                                                                            "name": "currentNodeList",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 148,
                                                                            "src": "2246:15:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                            }
                                                                        },
                                                                        "id": 281,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2246:22:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                        "hexValue": "32",
                                                                        "id": 282,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2272:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_2_by_1",
                                                                            "typeString": "int_const 2"
                                                                        },
                                                                        "value": "2"
                                                                    },
                                                                    "src": "2246:27:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseBody": {
                                                                    "id": 350,
                                                                    "nodeType": "Block",
                                                                    "src": "2978:45:1",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "hexValue": "66616c7365",
                                                                                "id": 348,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "bool",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "3003:5:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                },
                                                                                "value": "false"
                                                                            },
                                                                            "functionReturnParameters": 118,
                                                                            "id": 349,
                                                                            "nodeType": "Return",
                                                                            "src": "2996:12:1"
                                                                        }
                                                                    ]
                                                                },
                                                                "id": 351,
                                                                "nodeType": "IfStatement",
                                                                "src": "2242:781:1",
                                                                "trueBody": {
                                                                    "id": 347,
                                                                    "nodeType": "Block",
                                                                    "src": "2275:697:1",
                                                                    "statements": [
                                                                        {
                                                                            "assignments": [
                                                                                285
                                                                            ],
                                                                            "declarations": [
                                                                                {
                                                                                    "constant": false,
                                                                                    "id": 285,
                                                                                    "mutability": "mutable",
                                                                                    "name": "traversed",
                                                                                    "nameLocation": "2301:9:1",
                                                                                    "nodeType": "VariableDeclaration",
                                                                                    "scope": 347,
                                                                                    "src": "2293:17:1",
                                                                                    "stateVariable": false,
                                                                                    "storageLocation": "default",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 284,
                                                                                        "name": "uint256",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "2293:7:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "visibility": "internal"
                                                                                }
                                                                            ],
                                                                            "id": 296,
                                                                            "initialValue": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "baseExpression": {
                                                                                                    "id": 289,
                                                                                                    "name": "currentNodeList",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 148,
                                                                                                    "src": "2350:15:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 291,
                                                                                                "indexExpression": {
                                                                                                    "hexValue": "30",
                                                                                                    "id": 290,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "number",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "2366:1:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                                        "typeString": "int_const 0"
                                                                                                    },
                                                                                                    "value": "0"
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "2350:18:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 287,
                                                                                                "name": "RLPReader",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1220,
                                                                                                "src": "2332:9:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                                    "typeString": "type(library RLPReader)"
                                                                                                }
                                                                                            },
                                                                                            "id": 288,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "toBytes",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 1004,
                                                                                            "src": "2332:17:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                                            }
                                                                                        },
                                                                                        "id": 292,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "2332:37:1",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 293,
                                                                                        "name": "path",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 159,
                                                                                        "src": "2371:4:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 294,
                                                                                        "name": "pathPtr",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 155,
                                                                                        "src": "2377:7:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 286,
                                                                                    "name": "_nibblesToTraverse",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 436,
                                                                                    "src": "2313:18:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                                                                        "typeString": "function (bytes memory,bytes memory,uint256) pure returns (uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 295,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "2313:72:1",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "VariableDeclarationStatement",
                                                                            "src": "2293:92:1"
                                                                        },
                                                                        {
                                                                            "condition": {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                "id": 302,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 299,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 297,
                                                                                        "name": "pathPtr",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 155,
                                                                                        "src": "2407:7:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "+",
                                                                                    "rightExpression": {
                                                                                        "id": 298,
                                                                                        "name": "traversed",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 285,
                                                                                        "src": "2417:9:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "2407:19:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "==",
                                                                                "rightExpression": {
                                                                                    "expression": {
                                                                                        "id": 300,
                                                                                        "name": "path",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 159,
                                                                                        "src": "2430:4:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 301,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "length",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "2430:11:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "src": "2407:34:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 323,
                                                                            "nodeType": "IfStatement",
                                                                            "src": "2403:313:1",
                                                                            "trueBody": {
                                                                                "id": 322,
                                                                                "nodeType": "Block",
                                                                                "src": "2443:273:1",
                                                                                "statements": [
                                                                                    {
                                                                                        "condition": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_bytes32",
                                                                                                "typeString": "bytes32"
                                                                                            },
                                                                                            "id": 314,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "baseExpression": {
                                                                                                                    "id": 306,
                                                                                                                    "name": "currentNodeList",
                                                                                                                    "nodeType": "Identifier",
                                                                                                                    "overloadedDeclarations": [],
                                                                                                                    "referencedDeclaration": 148,
                                                                                                                    "src": "2529:15:1",
                                                                                                                    "typeDescriptions": {
                                                                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                                                    }
                                                                                                                },
                                                                                                                "id": 308,
                                                                                                                "indexExpression": {
                                                                                                                    "hexValue": "31",
                                                                                                                    "id": 307,
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "kind": "number",
                                                                                                                    "lValueRequested": false,
                                                                                                                    "nodeType": "Literal",
                                                                                                                    "src": "2545:1:1",
                                                                                                                    "typeDescriptions": {
                                                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                                                        "typeString": "int_const 1"
                                                                                                                    },
                                                                                                                    "value": "1"
                                                                                                                },
                                                                                                                "isConstant": false,
                                                                                                                "isLValue": true,
                                                                                                                "isPure": false,
                                                                                                                "lValueRequested": false,
                                                                                                                "nodeType": "IndexAccess",
                                                                                                                "src": "2529:18:1",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                                }
                                                                                                            }
                                                                                                        ],
                                                                                                        "expression": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                                }
                                                                                                            ],
                                                                                                            "expression": {
                                                                                                                "id": 304,
                                                                                                                "name": "RLPReader",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 1220,
                                                                                                                "src": "2511:9:1",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                                                    "typeString": "type(library RLPReader)"
                                                                                                                }
                                                                                                            },
                                                                                                            "id": 305,
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "memberName": "toBytes",
                                                                                                            "nodeType": "MemberAccess",
                                                                                                            "referencedDeclaration": 1004,
                                                                                                            "src": "2511:17:1",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 309,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": false,
                                                                                                        "kind": "functionCall",
                                                                                                        "lValueRequested": false,
                                                                                                        "names": [],
                                                                                                        "nodeType": "FunctionCall",
                                                                                                        "src": "2511:37:1",
                                                                                                        "tryCall": false,
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                            "typeString": "bytes memory"
                                                                                                        }
                                                                                                    }
                                                                                                ],
                                                                                                "expression": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                            "typeString": "bytes memory"
                                                                                                        }
                                                                                                    ],
                                                                                                    "id": 303,
                                                                                                    "name": "keccak256",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": -8,
                                                                                                    "src": "2501:9:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 310,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "kind": "functionCall",
                                                                                                "lValueRequested": false,
                                                                                                "names": [],
                                                                                                "nodeType": "FunctionCall",
                                                                                                "src": "2501:48:1",
                                                                                                "tryCall": false,
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "==",
                                                                                            "rightExpression": {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "id": 312,
                                                                                                        "name": "value",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 108,
                                                                                                        "src": "2563:5:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                            "typeString": "bytes memory"
                                                                                                        }
                                                                                                    }
                                                                                                ],
                                                                                                "expression": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                            "typeString": "bytes memory"
                                                                                                        }
                                                                                                    ],
                                                                                                    "id": 311,
                                                                                                    "name": "keccak256",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": -8,
                                                                                                    "src": "2553:9:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 313,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "kind": "functionCall",
                                                                                                "lValueRequested": false,
                                                                                                "names": [],
                                                                                                "nodeType": "FunctionCall",
                                                                                                "src": "2553:16:1",
                                                                                                "tryCall": false,
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            "src": "2501:68:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bool",
                                                                                                "typeString": "bool"
                                                                                            }
                                                                                        },
                                                                                        "falseBody": {
                                                                                            "id": 320,
                                                                                            "nodeType": "Block",
                                                                                            "src": "2637:61:1",
                                                                                            "statements": [
                                                                                                {
                                                                                                    "expression": {
                                                                                                        "hexValue": "66616c7365",
                                                                                                        "id": 318,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "bool",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "2670:5:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bool",
                                                                                                            "typeString": "bool"
                                                                                                        },
                                                                                                        "value": "false"
                                                                                                    },
                                                                                                    "functionReturnParameters": 118,
                                                                                                    "id": 319,
                                                                                                    "nodeType": "Return",
                                                                                                    "src": "2663:12:1"
                                                                                                }
                                                                                            ]
                                                                                        },
                                                                                        "id": 321,
                                                                                        "nodeType": "IfStatement",
                                                                                        "src": "2497:201:1",
                                                                                        "trueBody": {
                                                                                            "id": 317,
                                                                                            "nodeType": "Block",
                                                                                            "src": "2571:60:1",
                                                                                            "statements": [
                                                                                                {
                                                                                                    "expression": {
                                                                                                        "hexValue": "74727565",
                                                                                                        "id": 315,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "bool",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "2604:4:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bool",
                                                                                                            "typeString": "bool"
                                                                                                        },
                                                                                                        "value": "true"
                                                                                                    },
                                                                                                    "functionReturnParameters": 118,
                                                                                                    "id": 316,
                                                                                                    "nodeType": "Return",
                                                                                                    "src": "2597:11:1"
                                                                                                }
                                                                                            ]
                                                                                        }
                                                                                    }
                                                                                ]
                                                                            }
                                                                        },
                                                                        {
                                                                            "condition": {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                "id": 326,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "id": 324,
                                                                                    "name": "traversed",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 285,
                                                                                    "src": "2771:9:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "==",
                                                                                "rightExpression": {
                                                                                    "hexValue": "30",
                                                                                    "id": 325,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "2784:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                },
                                                                                "src": "2771:14:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 330,
                                                                            "nodeType": "IfStatement",
                                                                            "src": "2767:73:1",
                                                                            "trueBody": {
                                                                                "id": 329,
                                                                                "nodeType": "Block",
                                                                                "src": "2787:53:1",
                                                                                "statements": [
                                                                                    {
                                                                                        "expression": {
                                                                                            "hexValue": "66616c7365",
                                                                                            "id": 327,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "bool",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "2816:5:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bool",
                                                                                                "typeString": "bool"
                                                                                            },
                                                                                            "value": "false"
                                                                                        },
                                                                                        "functionReturnParameters": 118,
                                                                                        "id": 328,
                                                                                        "nodeType": "Return",
                                                                                        "src": "2809:12:1"
                                                                                    }
                                                                                ]
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 333,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "id": 331,
                                                                                    "name": "pathPtr",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 155,
                                                                                    "src": "2858:7:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "+=",
                                                                                "rightHandSide": {
                                                                                    "id": 332,
                                                                                    "name": "traversed",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 285,
                                                                                    "src": "2869:9:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "src": "2858:20:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 334,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "2858:20:1"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 345,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "id": 335,
                                                                                    "name": "nodeKey",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 151,
                                                                                    "src": "2896:7:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "baseExpression": {
                                                                                                        "id": 340,
                                                                                                        "name": "currentNodeList",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 148,
                                                                                                        "src": "2937:15:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 342,
                                                                                                    "indexExpression": {
                                                                                                        "hexValue": "31",
                                                                                                        "id": 341,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "number",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "2953:1:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                                                            "typeString": "int_const 1"
                                                                                                        },
                                                                                                        "value": "1"
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "2937:18:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                                                    }
                                                                                                ],
                                                                                                "expression": {
                                                                                                    "id": 338,
                                                                                                    "name": "RLPReader",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1220,
                                                                                                    "src": "2914:9:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                                        "typeString": "type(library RLPReader)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 339,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "memberName": "toUintStrict",
                                                                                                "nodeType": "MemberAccess",
                                                                                                "referencedDeclaration": 944,
                                                                                                "src": "2914:22:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$",
                                                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                                                }
                                                                                            },
                                                                                            "id": 343,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "functionCall",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "2914:42:1",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "id": 337,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "2906:7:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                                                                            "typeString": "type(bytes32)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 336,
                                                                                            "name": "bytes32",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "2906:7:1",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 344,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "2906:51:1",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                },
                                                                                "src": "2896:61:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "id": 346,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "2896:61:1"
                                                                        }
                                                                    ]
                                                                }
                                                            },
                                                            "id": 352,
                                                            "nodeType": "IfStatement",
                                                            "src": "1621:1402:1",
                                                            "trueBody": {
                                                                "id": 279,
                                                                "nodeType": "Block",
                                                                "src": "1655:581:1",
                                                                "statements": [
                                                                    {
                                                                        "condition": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 225,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 222,
                                                                                "name": "pathPtr",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 155,
                                                                                "src": "1677:7:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "==",
                                                                            "rightExpression": {
                                                                                "expression": {
                                                                                    "id": 223,
                                                                                    "name": "path",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 159,
                                                                                    "src": "1688:4:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                },
                                                                                "id": 224,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "1688:11:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1677:22:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 246,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "1673:270:1",
                                                                        "trueBody": {
                                                                            "id": 245,
                                                                            "nodeType": "Block",
                                                                            "src": "1701:242:1",
                                                                            "statements": [
                                                                                {
                                                                                    "condition": {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        },
                                                                                        "id": 237,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "baseExpression": {
                                                                                                                "id": 229,
                                                                                                                "name": "currentNodeList",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 148,
                                                                                                                "src": "1755:15:1",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                                                }
                                                                                                            },
                                                                                                            "id": 231,
                                                                                                            "indexExpression": {
                                                                                                                "hexValue": "3136",
                                                                                                                "id": 230,
                                                                                                                "isConstant": false,
                                                                                                                "isLValue": false,
                                                                                                                "isPure": true,
                                                                                                                "kind": "number",
                                                                                                                "lValueRequested": false,
                                                                                                                "nodeType": "Literal",
                                                                                                                "src": "1771:2:1",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_rational_16_by_1",
                                                                                                                    "typeString": "int_const 16"
                                                                                                                },
                                                                                                                "value": "16"
                                                                                                            },
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "nodeType": "IndexAccess",
                                                                                                            "src": "1755:19:1",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                                                            }
                                                                                                        }
                                                                                                    ],
                                                                                                    "expression": {
                                                                                                        "argumentTypes": [
                                                                                                            {
                                                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                                                            }
                                                                                                        ],
                                                                                                        "expression": {
                                                                                                            "id": 227,
                                                                                                            "name": "RLPReader",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 1220,
                                                                                                            "src": "1737:9:1",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                                                "typeString": "type(library RLPReader)"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 228,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "memberName": "toBytes",
                                                                                                        "nodeType": "MemberAccess",
                                                                                                        "referencedDeclaration": 1004,
                                                                                                        "src": "1737:17:1",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 232,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "kind": "functionCall",
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [],
                                                                                                    "nodeType": "FunctionCall",
                                                                                                    "src": "1737:38:1",
                                                                                                    "tryCall": false,
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 226,
                                                                                                "name": "keccak256",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": -8,
                                                                                                "src": "1727:9:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                                }
                                                                                            },
                                                                                            "id": 233,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "functionCall",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "1727:49:1",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes32",
                                                                                                "typeString": "bytes32"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "==",
                                                                                        "rightExpression": {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "id": 235,
                                                                                                    "name": "value",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 108,
                                                                                                    "src": "1790:5:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 234,
                                                                                                "name": "keccak256",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": -8,
                                                                                                "src": "1780:9:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                                                }
                                                                                            },
                                                                                            "id": 236,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "functionCall",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "1780:16:1",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes32",
                                                                                                "typeString": "bytes32"
                                                                                            }
                                                                                        },
                                                                                        "src": "1727:69:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bool",
                                                                                            "typeString": "bool"
                                                                                        }
                                                                                    },
                                                                                    "falseBody": {
                                                                                        "id": 243,
                                                                                        "nodeType": "Block",
                                                                                        "src": "1864:61:1",
                                                                                        "statements": [
                                                                                            {
                                                                                                "expression": {
                                                                                                    "hexValue": "66616c7365",
                                                                                                    "id": 241,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "bool",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "1897:5:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bool",
                                                                                                        "typeString": "bool"
                                                                                                    },
                                                                                                    "value": "false"
                                                                                                },
                                                                                                "functionReturnParameters": 118,
                                                                                                "id": 242,
                                                                                                "nodeType": "Return",
                                                                                                "src": "1890:12:1"
                                                                                            }
                                                                                        ]
                                                                                    },
                                                                                    "id": 244,
                                                                                    "nodeType": "IfStatement",
                                                                                    "src": "1723:202:1",
                                                                                    "trueBody": {
                                                                                        "id": 240,
                                                                                        "nodeType": "Block",
                                                                                        "src": "1798:60:1",
                                                                                        "statements": [
                                                                                            {
                                                                                                "expression": {
                                                                                                    "hexValue": "74727565",
                                                                                                    "id": 238,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "bool",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "1831:4:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bool",
                                                                                                        "typeString": "bool"
                                                                                                    },
                                                                                                    "value": "true"
                                                                                                },
                                                                                                "functionReturnParameters": 118,
                                                                                                "id": 239,
                                                                                                "nodeType": "Return",
                                                                                                "src": "1824:11:1"
                                                                                            }
                                                                                        ]
                                                                                    }
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    {
                                                                        "assignments": [
                                                                            248
                                                                        ],
                                                                        "declarations": [
                                                                            {
                                                                                "constant": false,
                                                                                "id": 248,
                                                                                "mutability": "mutable",
                                                                                "name": "nextPathNibble",
                                                                                "nameLocation": "1967:14:1",
                                                                                "nodeType": "VariableDeclaration",
                                                                                "scope": 279,
                                                                                "src": "1961:20:1",
                                                                                "stateVariable": false,
                                                                                "storageLocation": "default",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 247,
                                                                                    "name": "uint8",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "1961:5:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                "visibility": "internal"
                                                                            }
                                                                        ],
                                                                        "id": 255,
                                                                        "initialValue": {
                                                                            "arguments": [
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "id": 251,
                                                                                        "name": "path",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 159,
                                                                                        "src": "1990:4:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 253,
                                                                                    "indexExpression": {
                                                                                        "id": 252,
                                                                                        "name": "pathPtr",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 155,
                                                                                        "src": "1995:7:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "1990:13:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes1",
                                                                                        "typeString": "bytes1"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes1",
                                                                                        "typeString": "bytes1"
                                                                                    }
                                                                                ],
                                                                                "id": 250,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "1984:5:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                                                    "typeString": "type(uint8)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 249,
                                                                                    "name": "uint8",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "1984:5:1",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 254,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "1984:20:1",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "nodeType": "VariableDeclarationStatement",
                                                                        "src": "1961:43:1"
                                                                    },
                                                                    {
                                                                        "condition": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            },
                                                                            "id": 258,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 256,
                                                                                "name": "nextPathNibble",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 248,
                                                                                "src": "2026:14:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": ">",
                                                                            "rightExpression": {
                                                                                "hexValue": "3136",
                                                                                "id": 257,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "2043:2:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_16_by_1",
                                                                                    "typeString": "int_const 16"
                                                                                },
                                                                                "value": "16"
                                                                            },
                                                                            "src": "2026:19:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 262,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "2022:78:1",
                                                                        "trueBody": {
                                                                            "id": 261,
                                                                            "nodeType": "Block",
                                                                            "src": "2047:53:1",
                                                                            "statements": [
                                                                                {
                                                                                    "expression": {
                                                                                        "hexValue": "66616c7365",
                                                                                        "id": 259,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "bool",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "2076:5:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bool",
                                                                                            "typeString": "bool"
                                                                                        },
                                                                                        "value": "false"
                                                                                    },
                                                                                    "functionReturnParameters": 118,
                                                                                    "id": 260,
                                                                                    "nodeType": "Return",
                                                                                    "src": "2069:12:1"
                                                                                }
                                                                            ]
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 273,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 263,
                                                                                "name": "nodeKey",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 151,
                                                                                "src": "2117:7:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "baseExpression": {
                                                                                                    "id": 268,
                                                                                                    "name": "currentNodeList",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 148,
                                                                                                    "src": "2158:15:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 270,
                                                                                                "indexExpression": {
                                                                                                    "id": 269,
                                                                                                    "name": "nextPathNibble",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 248,
                                                                                                    "src": "2174:14:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint8",
                                                                                                        "typeString": "uint8"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "2158:31:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 266,
                                                                                                "name": "RLPReader",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1220,
                                                                                                "src": "2135:9:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                                                    "typeString": "type(library RLPReader)"
                                                                                                }
                                                                                            },
                                                                                            "id": 267,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "toUintStrict",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 944,
                                                                                            "src": "2135:22:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$",
                                                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                                            }
                                                                                        },
                                                                                        "id": 271,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "2135:55:1",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 265,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "2127:7:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                                                                        "typeString": "type(bytes32)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 264,
                                                                                        "name": "bytes32",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "2127:7:1",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 272,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "2127:64:1",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "src": "2117:74:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        "id": 274,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "2117:74:1"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 277,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 275,
                                                                                "name": "pathPtr",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 155,
                                                                                "src": "2209:7:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "+=",
                                                                            "rightHandSide": {
                                                                                "hexValue": "31",
                                                                                "id": 276,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "2220:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "src": "2209:12:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 278,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "2209:12:1"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 179,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 176,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 173,
                                                        "src": "1266:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 177,
                                                            "name": "parentNodes",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 134,
                                                            "src": "1270:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                            }
                                                        },
                                                        "id": 178,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "1270:18:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1266:22:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 354,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        173
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 173,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "1259:1:1",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 354,
                                                            "src": "1251:9:1",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 172,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1251:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 175,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 174,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1263:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "1251:13:1"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 181,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "1290:3:1",
                                                        "subExpression": {
                                                            "id": 180,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 173,
                                                            "src": "1290:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 182,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "1290:3:1"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "1246:1787:1"
                                            }
                                        ]
                                    },
                                    "id": 356,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "verify",
                                    "nameLocation": "632:6:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 115,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 108,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "661:5:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 356,
                                                "src": "648:18:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 107,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "648:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 110,
                                                "mutability": "mutable",
                                                "name": "encodedPath",
                                                "nameLocation": "689:11:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 356,
                                                "src": "676:24:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 109,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "676:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 112,
                                                "mutability": "mutable",
                                                "name": "rlpParentNodes",
                                                "nameLocation": "723:14:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 356,
                                                "src": "710:27:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 111,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "710:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 114,
                                                "mutability": "mutable",
                                                "name": "root",
                                                "nameLocation": "755:4:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 356,
                                                "src": "747:12:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 113,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "747:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "638:127:1"
                                    },
                                    "returnParameters": {
                                        "id": 118,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 117,
                                                "mutability": "mutable",
                                                "name": "proofValidity",
                                                "nameLocation": "794:13:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 356,
                                                "src": "789:18:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 116,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "789:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "788:20:1"
                                    },
                                    "scope": 591,
                                    "src": "623:2416:1",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 435,
                                        "nodeType": "Block",
                                        "src": "3203:796:1",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    368
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 368,
                                                        "mutability": "mutable",
                                                        "name": "len",
                                                        "nameLocation": "3221:3:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 435,
                                                        "src": "3213:11:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 367,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3213:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 370,
                                                "initialValue": {
                                                    "hexValue": "30",
                                                    "id": 369,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3227:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3213:15:1"
                                            },
                                            {
                                                "assignments": [
                                                    372
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 372,
                                                        "mutability": "mutable",
                                                        "name": "partialPath",
                                                        "nameLocation": "3436:11:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 435,
                                                        "src": "3423:24:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 371,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3423:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 376,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 374,
                                                            "name": "encodedPartialPath",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 358,
                                                            "src": "3466:18:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 373,
                                                        "name": "_getNibbleArray",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 550,
                                                        "src": "3450:15:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 375,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3450:35:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3423:62:1"
                                            },
                                            {
                                                "assignments": [
                                                    378
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 378,
                                                        "mutability": "mutable",
                                                        "name": "slicedPath",
                                                        "nameLocation": "3508:10:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 435,
                                                        "src": "3495:23:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 377,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3495:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 384,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 381,
                                                                "name": "partialPath",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 372,
                                                                "src": "3531:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 382,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "3531:18:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 380,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "3521:9:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 379,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3525:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 383,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3521:29:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3495:55:1"
                                            },
                                            {
                                                "body": {
                                                    "id": 412,
                                                    "nodeType": "Block",
                                                    "src": "3721:102:1",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                399
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 399,
                                                                    "mutability": "mutable",
                                                                    "name": "pathNibble",
                                                                    "nameLocation": "3742:10:1",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 412,
                                                                    "src": "3735:17:1",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 398,
                                                                        "name": "bytes1",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3735:6:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 403,
                                                            "initialValue": {
                                                                "baseExpression": {
                                                                    "id": 400,
                                                                    "name": "path",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 360,
                                                                    "src": "3755:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "id": 402,
                                                                "indexExpression": {
                                                                    "id": 401,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 386,
                                                                    "src": "3760:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3755:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "3735:27:1"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 410,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 404,
                                                                        "name": "slicedPath",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 378,
                                                                        "src": "3776:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 408,
                                                                    "indexExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 407,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 405,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 386,
                                                                            "src": "3787:1:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "-",
                                                                        "rightExpression": {
                                                                            "id": 406,
                                                                            "name": "pathPtr",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 362,
                                                                            "src": "3791:7:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "src": "3787:11:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "3776:23:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 409,
                                                                    "name": "pathNibble",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 399,
                                                                    "src": "3802:10:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "src": "3776:36:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "id": 411,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3776:36:1"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 394,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 389,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 386,
                                                        "src": "3682:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 393,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 390,
                                                            "name": "pathPtr",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 362,
                                                            "src": "3686:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 391,
                                                                "name": "partialPath",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 372,
                                                                "src": "3696:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 392,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "3696:18:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "3686:28:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3682:32:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 413,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        386
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 386,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "3669:1:1",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 413,
                                                            "src": "3661:9:1",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 385,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3661:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 388,
                                                    "initialValue": {
                                                        "id": 387,
                                                        "name": "pathPtr",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 362,
                                                        "src": "3673:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "3661:19:1"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 396,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "3716:3:1",
                                                        "subExpression": {
                                                            "id": 395,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 386,
                                                            "src": "3716:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 397,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3716:3:1"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "3656:167:1"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 420,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 415,
                                                                "name": "partialPath",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 372,
                                                                "src": "3847:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "id": 414,
                                                            "name": "keccak256",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -8,
                                                            "src": "3837:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 416,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3837:22:1",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 418,
                                                                "name": "slicedPath",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 378,
                                                                "src": "3873:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "id": 417,
                                                            "name": "keccak256",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -8,
                                                            "src": "3863:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 419,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3863:21:1",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "3837:47:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 431,
                                                    "nodeType": "Block",
                                                    "src": "3941:32:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 429,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 427,
                                                                    "name": "len",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 368,
                                                                    "src": "3955:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "30",
                                                                    "id": 428,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "3961:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "3955:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 430,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3955:7:1"
                                                        }
                                                    ]
                                                },
                                                "id": 432,
                                                "nodeType": "IfStatement",
                                                "src": "3833:140:1",
                                                "trueBody": {
                                                    "id": 426,
                                                    "nodeType": "Block",
                                                    "src": "3886:49:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 424,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 421,
                                                                    "name": "len",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 368,
                                                                    "src": "3900:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "expression": {
                                                                        "id": 422,
                                                                        "name": "partialPath",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 372,
                                                                        "src": "3906:11:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 423,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3906:18:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "3900:24:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 425,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3900:24:1"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 433,
                                                    "name": "len",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 368,
                                                    "src": "3989:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 366,
                                                "id": 434,
                                                "nodeType": "Return",
                                                "src": "3982:10:1"
                                            }
                                        ]
                                    },
                                    "id": 436,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_nibblesToTraverse",
                                    "nameLocation": "3054:18:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 363,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 358,
                                                "mutability": "mutable",
                                                "name": "encodedPartialPath",
                                                "nameLocation": "3095:18:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 436,
                                                "src": "3082:31:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 357,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3082:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 360,
                                                "mutability": "mutable",
                                                "name": "path",
                                                "nameLocation": "3136:4:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 436,
                                                "src": "3123:17:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 359,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3123:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 362,
                                                "mutability": "mutable",
                                                "name": "pathPtr",
                                                "nameLocation": "3158:7:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 436,
                                                "src": "3150:15:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 361,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3150:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3072:99:1"
                                    },
                                    "returnParameters": {
                                        "id": 366,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 365,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 436,
                                                "src": "3194:7:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 364,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3194:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3193:9:1"
                                    },
                                    "scope": 591,
                                    "src": "3045:954:1",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 549,
                                        "nodeType": "Block",
                                        "src": "4117:697:1",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    444
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 444,
                                                        "mutability": "mutable",
                                                        "name": "nibbles",
                                                        "nameLocation": "4140:7:1",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 549,
                                                        "src": "4127:20:1",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 443,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4127:5:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 446,
                                                "initialValue": {
                                                    "hexValue": "",
                                                    "id": 445,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4150:2:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                        "typeString": "literal_string \"\""
                                                    },
                                                    "value": ""
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4127:25:1"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 450,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 447,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 438,
                                                            "src": "4166:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 448,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4166:8:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 449,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4177:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "4166:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 546,
                                                "nodeType": "IfStatement",
                                                "src": "4162:622:1",
                                                "trueBody": {
                                                    "id": 545,
                                                    "nodeType": "Block",
                                                    "src": "4180:604:1",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                452
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 452,
                                                                    "mutability": "mutable",
                                                                    "name": "offset",
                                                                    "nameLocation": "4200:6:1",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 545,
                                                                    "src": "4194:12:1",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 451,
                                                                        "name": "uint8",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4194:5:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 453,
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "4194:12:1"
                                                        },
                                                        {
                                                            "assignments": [
                                                                455
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 455,
                                                                    "mutability": "mutable",
                                                                    "name": "hpNibble",
                                                                    "nameLocation": "4226:8:1",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 545,
                                                                    "src": "4220:14:1",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 454,
                                                                        "name": "uint8",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4220:5:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 463,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "30",
                                                                                "id": 459,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4264:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                "value": "0"
                                                                            },
                                                                            {
                                                                                "id": 460,
                                                                                "name": "b",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 438,
                                                                                "src": "4267:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            ],
                                                                            "id": 458,
                                                                            "name": "_getNthNibbleOfBytes",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 590,
                                                                            "src": "4243:20:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes1_$",
                                                                                "typeString": "function (uint256,bytes memory) pure returns (bytes1)"
                                                                            }
                                                                        },
                                                                        "id": 461,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "4243:26:1",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    ],
                                                                    "id": 457,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4237:5:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_uint8_$",
                                                                        "typeString": "type(uint8)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 456,
                                                                        "name": "uint8",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4237:5:1",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 462,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4237:33:1",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "4220:50:1"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 470,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "id": 466,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 464,
                                                                        "name": "hpNibble",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 455,
                                                                        "src": "4288:8:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                        "hexValue": "31",
                                                                        "id": 465,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4300:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                            "typeString": "int_const 1"
                                                                        },
                                                                        "value": "1"
                                                                    },
                                                                    "src": "4288:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "||",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "id": 469,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 467,
                                                                        "name": "hpNibble",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 455,
                                                                        "src": "4305:8:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                        "hexValue": "33",
                                                                        "id": 468,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4317:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_3_by_1",
                                                                            "typeString": "int_const 3"
                                                                        },
                                                                        "value": "3"
                                                                    },
                                                                    "src": "4305:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "4288:30:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 517,
                                                                "nodeType": "Block",
                                                                "src": "4527:98:1",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 511,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 501,
                                                                                "name": "nibbles",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 444,
                                                                                "src": "4545:7:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 509,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            "id": 507,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "expression": {
                                                                                                    "id": 504,
                                                                                                    "name": "b",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 438,
                                                                                                    "src": "4565:1:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 505,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "memberName": "length",
                                                                                                "nodeType": "MemberAccess",
                                                                                                "src": "4565:8:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "*",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 506,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "4576:1:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "src": "4565:12:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "-",
                                                                                        "rightExpression": {
                                                                                            "hexValue": "32",
                                                                                            "id": 508,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "4580:1:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_2_by_1",
                                                                                                "typeString": "int_const 2"
                                                                                            },
                                                                                            "value": "2"
                                                                                        },
                                                                                        "src": "4565:16:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 503,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "NewExpression",
                                                                                    "src": "4555:9:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 502,
                                                                                        "name": "bytes",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "4559:5:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                                            "typeString": "bytes"
                                                                                        }
                                                                                    }
                                                                                },
                                                                                "id": 510,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "4555:27:1",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "src": "4545:37:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        },
                                                                        "id": 512,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4545:37:1"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 515,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 513,
                                                                                "name": "offset",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 452,
                                                                                "src": "4600:6:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "hexValue": "30",
                                                                                "id": 514,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4609:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                "value": "0"
                                                                            },
                                                                            "src": "4600:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "id": 516,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4600:10:1"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 518,
                                                            "nodeType": "IfStatement",
                                                            "src": "4284:341:1",
                                                            "trueBody": {
                                                                "id": 500,
                                                                "nodeType": "Block",
                                                                "src": "4320:201:1",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 481,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 471,
                                                                                "name": "nibbles",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 444,
                                                                                "src": "4338:7:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 479,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            "id": 477,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "expression": {
                                                                                                    "id": 474,
                                                                                                    "name": "b",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 438,
                                                                                                    "src": "4358:1:1",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                        "typeString": "bytes memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 475,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "memberName": "length",
                                                                                                "nodeType": "MemberAccess",
                                                                                                "src": "4358:8:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "*",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 476,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "4369:1:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "src": "4358:12:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "-",
                                                                                        "rightExpression": {
                                                                                            "hexValue": "31",
                                                                                            "id": 478,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "4373:1:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                                "typeString": "int_const 1"
                                                                                            },
                                                                                            "value": "1"
                                                                                        },
                                                                                        "src": "4358:16:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 473,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "NewExpression",
                                                                                    "src": "4348:9:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 472,
                                                                                        "name": "bytes",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "4352:5:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                                            "typeString": "bytes"
                                                                                        }
                                                                                    }
                                                                                },
                                                                                "id": 480,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "4348:27:1",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "src": "4338:37:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        },
                                                                        "id": 482,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4338:37:1"
                                                                    },
                                                                    {
                                                                        "assignments": [
                                                                            484
                                                                        ],
                                                                        "declarations": [
                                                                            {
                                                                                "constant": false,
                                                                                "id": 484,
                                                                                "mutability": "mutable",
                                                                                "name": "oddNibble",
                                                                                "nameLocation": "4400:9:1",
                                                                                "nodeType": "VariableDeclaration",
                                                                                "scope": 500,
                                                                                "src": "4393:16:1",
                                                                                "stateVariable": false,
                                                                                "storageLocation": "default",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 483,
                                                                                    "name": "bytes1",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "4393:6:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes1",
                                                                                        "typeString": "bytes1"
                                                                                    }
                                                                                },
                                                                                "visibility": "internal"
                                                                            }
                                                                        ],
                                                                        "id": 489,
                                                                        "initialValue": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "31",
                                                                                    "id": 486,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4433:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    "value": "1"
                                                                                },
                                                                                {
                                                                                    "id": 487,
                                                                                    "name": "b",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 438,
                                                                                    "src": "4436:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                ],
                                                                                "id": 485,
                                                                                "name": "_getNthNibbleOfBytes",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 590,
                                                                                "src": "4412:20:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes1_$",
                                                                                    "typeString": "function (uint256,bytes memory) pure returns (bytes1)"
                                                                                }
                                                                            },
                                                                            "id": 488,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4412:26:1",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        },
                                                                        "nodeType": "VariableDeclarationStatement",
                                                                        "src": "4393:45:1"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 494,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "id": 490,
                                                                                    "name": "nibbles",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 444,
                                                                                    "src": "4456:7:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                },
                                                                                "id": 492,
                                                                                "indexExpression": {
                                                                                    "hexValue": "30",
                                                                                    "id": 491,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4464:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "4456:10:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "id": 493,
                                                                                "name": "oddNibble",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 484,
                                                                                "src": "4469:9:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                }
                                                                            },
                                                                            "src": "4456:22:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        },
                                                                        "id": 495,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4456:22:1"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 498,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 496,
                                                                                "name": "offset",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 452,
                                                                                "src": "4496:6:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "hexValue": "31",
                                                                                "id": 497,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4505:1:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "src": "4496:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "id": 499,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4496:10:1"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "body": {
                                                                "id": 543,
                                                                "nodeType": "Block",
                                                                "src": "4689:85:1",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 541,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "id": 530,
                                                                                    "name": "nibbles",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 444,
                                                                                    "src": "4707:7:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                },
                                                                                "id": 532,
                                                                                "indexExpression": {
                                                                                    "id": 531,
                                                                                    "name": "i",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 520,
                                                                                    "src": "4715:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "4707:10:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 538,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            "id": 536,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "id": 534,
                                                                                                "name": "i",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 520,
                                                                                                "src": "4741:1:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "-",
                                                                                            "rightExpression": {
                                                                                                "id": 535,
                                                                                                "name": "offset",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 452,
                                                                                                "src": "4745:6:1",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint8",
                                                                                                    "typeString": "uint8"
                                                                                                }
                                                                                            },
                                                                                            "src": "4741:10:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "+",
                                                                                        "rightExpression": {
                                                                                            "hexValue": "32",
                                                                                            "id": 537,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "4754:1:1",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_2_by_1",
                                                                                                "typeString": "int_const 2"
                                                                                            },
                                                                                            "value": "2"
                                                                                        },
                                                                                        "src": "4741:14:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 539,
                                                                                        "name": "b",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 438,
                                                                                        "src": "4757:1:1",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                                            "typeString": "bytes memory"
                                                                                        }
                                                                                    ],
                                                                                    "id": 533,
                                                                                    "name": "_getNthNibbleOfBytes",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 590,
                                                                                    "src": "4720:20:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes1_$",
                                                                                        "typeString": "function (uint256,bytes memory) pure returns (bytes1)"
                                                                                    }
                                                                                },
                                                                                "id": 540,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "4720:39:1",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes1",
                                                                                    "typeString": "bytes1"
                                                                                }
                                                                            },
                                                                            "src": "4707:52:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        },
                                                                        "id": 542,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4707:52:1"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 526,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 523,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 520,
                                                                    "src": "4664:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 524,
                                                                        "name": "nibbles",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 444,
                                                                        "src": "4668:7:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 525,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "4668:14:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4664:18:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 544,
                                                            "initializationExpression": {
                                                                "assignments": [
                                                                    520
                                                                ],
                                                                "declarations": [
                                                                    {
                                                                        "constant": false,
                                                                        "id": 520,
                                                                        "mutability": "mutable",
                                                                        "name": "i",
                                                                        "nameLocation": "4652:1:1",
                                                                        "nodeType": "VariableDeclaration",
                                                                        "scope": 544,
                                                                        "src": "4644:9:1",
                                                                        "stateVariable": false,
                                                                        "storageLocation": "default",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 519,
                                                                            "name": "uint256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4644:7:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "visibility": "internal"
                                                                    }
                                                                ],
                                                                "id": 522,
                                                                "initialValue": {
                                                                    "id": 521,
                                                                    "name": "offset",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 452,
                                                                    "src": "4656:6:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "nodeType": "VariableDeclarationStatement",
                                                                "src": "4644:18:1"
                                                            },
                                                            "loopExpression": {
                                                                "expression": {
                                                                    "id": 528,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "UnaryOperation",
                                                                    "operator": "++",
                                                                    "prefix": false,
                                                                    "src": "4684:3:1",
                                                                    "subExpression": {
                                                                        "id": 527,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 520,
                                                                        "src": "4684:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 529,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "4684:3:1"
                                                            },
                                                            "nodeType": "ForStatement",
                                                            "src": "4639:135:1"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 547,
                                                    "name": "nibbles",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 444,
                                                    "src": "4800:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 442,
                                                "id": 548,
                                                "nodeType": "Return",
                                                "src": "4793:14:1"
                                            }
                                        ]
                                    },
                                    "id": 550,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getNibbleArray",
                                    "nameLocation": "4048:15:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 439,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 438,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4077:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 550,
                                                "src": "4064:14:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 437,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4064:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4063:16:1"
                                    },
                                    "returnParameters": {
                                        "id": 442,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 441,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 550,
                                                "src": "4103:12:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 440,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4103:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4102:14:1"
                                    },
                                    "scope": 591,
                                    "src": "4039:775:1",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 589,
                                        "nodeType": "Block",
                                        "src": "4909:96:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 565,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 563,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 561,
                                                                        "name": "n",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 552,
                                                                        "src": "4933:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "%",
                                                                    "rightExpression": {
                                                                        "hexValue": "32",
                                                                        "id": 562,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4937:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_2_by_1",
                                                                            "typeString": "int_const 2"
                                                                        },
                                                                        "value": "2"
                                                                    },
                                                                    "src": "4933:5:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 564,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4942:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "4933:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                },
                                                                "id": 585,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "baseExpression": {
                                                                                "id": 578,
                                                                                "name": "str",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 554,
                                                                                "src": "4979:3:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "id": 582,
                                                                            "indexExpression": {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                "id": 581,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "id": 579,
                                                                                    "name": "n",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 552,
                                                                                    "src": "4983:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "/",
                                                                                "rightExpression": {
                                                                                    "hexValue": "32",
                                                                                    "id": 580,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4987:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_2_by_1",
                                                                                        "typeString": "int_const 2"
                                                                                    },
                                                                                    "value": "2"
                                                                                },
                                                                                "src": "4983:5:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4979:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        ],
                                                                        "id": 577,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "4973:5:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                                            "typeString": "type(uint8)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 576,
                                                                            "name": "uint8",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4973:5:1",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 583,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4973:17:1",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "%",
                                                                "rightExpression": {
                                                                    "hexValue": "30783130",
                                                                    "id": 584,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4993:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_16_by_1",
                                                                        "typeString": "int_const 16"
                                                                    },
                                                                    "value": "0x10"
                                                                },
                                                                "src": "4973:24:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "id": 586,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "Conditional",
                                                            "src": "4933:64:1",
                                                            "trueExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                },
                                                                "id": 575,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "baseExpression": {
                                                                                "id": 568,
                                                                                "name": "str",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 554,
                                                                                "src": "4952:3:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            "id": 572,
                                                                            "indexExpression": {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                "id": 571,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "id": 569,
                                                                                    "name": "n",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 552,
                                                                                    "src": "4956:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "/",
                                                                                "rightExpression": {
                                                                                    "hexValue": "32",
                                                                                    "id": 570,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4960:1:1",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_2_by_1",
                                                                                        "typeString": "int_const 2"
                                                                                    },
                                                                                    "value": "2"
                                                                                },
                                                                                "src": "4956:5:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4952:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes1",
                                                                                "typeString": "bytes1"
                                                                            }
                                                                        ],
                                                                        "id": 567,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "4946:5:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint8_$",
                                                                            "typeString": "type(uint8)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 566,
                                                                            "name": "uint8",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4946:5:1",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 573,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4946:17:1",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "/",
                                                                "rightExpression": {
                                                                    "hexValue": "30783130",
                                                                    "id": 574,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4966:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_16_by_1",
                                                                        "typeString": "int_const 16"
                                                                    },
                                                                    "value": "0x10"
                                                                },
                                                                "src": "4946:24:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        ],
                                                        "id": 560,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "4926:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                                            "typeString": "type(bytes1)"
                                                        },
                                                        "typeName": {
                                                            "id": 559,
                                                            "name": "bytes1",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4926:6:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 587,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4926:72:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                },
                                                "functionReturnParameters": 558,
                                                "id": 588,
                                                "nodeType": "Return",
                                                "src": "4919:79:1"
                                            }
                                        ]
                                    },
                                    "id": 590,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getNthNibbleOfBytes",
                                    "nameLocation": "4829:20:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 555,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 552,
                                                "mutability": "mutable",
                                                "name": "n",
                                                "nameLocation": "4858:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 590,
                                                "src": "4850:9:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 551,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4850:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 554,
                                                "mutability": "mutable",
                                                "name": "str",
                                                "nameLocation": "4874:3:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 590,
                                                "src": "4861:16:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 553,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4861:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4849:29:1"
                                    },
                                    "returnParameters": {
                                        "id": 558,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 557,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 590,
                                                "src": "4901:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                },
                                                "typeName": {
                                                    "id": 556,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4901:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4900:8:1"
                                    },
                                    "scope": 591,
                                    "src": "4820:185:1",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 592,
                            "src": "251:4756:1",
                            "usedErrors": []
                        }
                    ],
                    "src": "180:4828:1"
                },
                "id": 1
            },
            "contracts/external/polygon/lib/RLPReader.sol": {
                "ast": {
                    "absolutePath": "contracts/external/polygon/lib/RLPReader.sol",
                    "exportedSymbols": {
                        "RLPReader": [
                            1220
                        ]
                    },
                    "id": 1221,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 593,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "540:23:2"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "RLPReader",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "fullyImplemented": true,
                            "id": 1220,
                            "linearizedBaseContracts": [
                                1220
                            ],
                            "name": "RLPReader",
                            "nameLocation": "573:9:2",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "id": 596,
                                    "mutability": "constant",
                                    "name": "STRING_SHORT_START",
                                    "nameLocation": "604:18:2",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1220,
                                    "src": "589:40:2",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 594,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "589:5:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30783830",
                                        "id": 595,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "625:4:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_128_by_1",
                                            "typeString": "int_const 128"
                                        },
                                        "value": "0x80"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 599,
                                    "mutability": "constant",
                                    "name": "STRING_LONG_START",
                                    "nameLocation": "650:17:2",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1220,
                                    "src": "635:39:2",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 597,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "635:5:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30786238",
                                        "id": 598,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "670:4:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_184_by_1",
                                            "typeString": "int_const 184"
                                        },
                                        "value": "0xb8"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 602,
                                    "mutability": "constant",
                                    "name": "LIST_SHORT_START",
                                    "nameLocation": "695:16:2",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1220,
                                    "src": "680:38:2",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 600,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "680:5:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30786330",
                                        "id": 601,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "714:4:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_192_by_1",
                                            "typeString": "int_const 192"
                                        },
                                        "value": "0xc0"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 605,
                                    "mutability": "constant",
                                    "name": "LIST_LONG_START",
                                    "nameLocation": "739:15:2",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1220,
                                    "src": "724:37:2",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 603,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "724:5:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30786638",
                                        "id": 604,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "757:4:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_248_by_1",
                                            "typeString": "int_const 248"
                                        },
                                        "value": "0xf8"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 608,
                                    "mutability": "constant",
                                    "name": "WORD_SIZE",
                                    "nameLocation": "782:9:2",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1220,
                                    "src": "767:29:2",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 606,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "767:5:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "3332",
                                        "id": 607,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "794:2:2",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "canonicalName": "RLPReader.RLPItem",
                                    "id": 613,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 610,
                                            "mutability": "mutable",
                                            "name": "len",
                                            "nameLocation": "836:3:2",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 613,
                                            "src": "828:11:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 609,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "828:7:2",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 612,
                                            "mutability": "mutable",
                                            "name": "memPtr",
                                            "nameLocation": "857:6:2",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 613,
                                            "src": "849:14:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 611,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "849:7:2",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "RLPItem",
                                    "nameLocation": "810:7:2",
                                    "nodeType": "StructDefinition",
                                    "scope": 1220,
                                    "src": "803:67:2",
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 639,
                                        "nodeType": "Block",
                                        "src": "1005:213:2",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 625,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 622,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 615,
                                                                    "src": "1023:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "id": 623,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1023:11:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 624,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1037:1:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "1023:15:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a20494e56414c49445f42595445535f4c454e475448",
                                                            "id": 626,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1040:33:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_4de33b8f9a6a9d4e5e530d4dcde07fdbbca520cb5f7b02f839e6ea14079ca7d6",
                                                                "typeString": "literal_string \"RLPReader: INVALID_BYTES_LENGTH\""
                                                            },
                                                            "value": "RLPReader: INVALID_BYTES_LENGTH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_4de33b8f9a6a9d4e5e530d4dcde07fdbbca520cb5f7b02f839e6ea14079ca7d6",
                                                                "typeString": "literal_string \"RLPReader: INVALID_BYTES_LENGTH\""
                                                            }
                                                        ],
                                                        "id": 621,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1015:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 627,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1015:59:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 628,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1015:59:2"
                                            },
                                            {
                                                "assignments": [
                                                    630
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 630,
                                                        "mutability": "mutable",
                                                        "name": "memPtr",
                                                        "nameLocation": "1092:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 639,
                                                        "src": "1084:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 629,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1084:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 631,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1084:14:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1117:49:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1131:25:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "item",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1145:4:2"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1151:4:2",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1141:3:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1141:15:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1131:6:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 615,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1145:4:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 630,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1131:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 632,
                                                "nodeType": "InlineAssembly",
                                                "src": "1108:58:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 634,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 615,
                                                                "src": "1191:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 635,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "1191:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 636,
                                                            "name": "memPtr",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 630,
                                                            "src": "1204:6:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 633,
                                                        "name": "RLPItem",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 613,
                                                        "src": "1183:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_RLPItem_$613_storage_ptr_$",
                                                            "typeString": "type(struct RLPReader.RLPItem storage pointer)"
                                                        }
                                                    },
                                                    "id": 637,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1183:28:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                    }
                                                },
                                                "functionReturnParameters": 620,
                                                "id": 638,
                                                "nodeType": "Return",
                                                "src": "1176:35:2"
                                            }
                                        ]
                                    },
                                    "id": 640,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toRlpItem",
                                    "nameLocation": "937:9:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 616,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 615,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "960:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 640,
                                                "src": "947:17:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 614,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "947:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "946:19:2"
                                    },
                                    "returnParameters": {
                                        "id": 620,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 619,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 640,
                                                "src": "989:14:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 618,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 617,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "989:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "989:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "988:16:2"
                                    },
                                    "scope": 1220,
                                    "src": "928:290:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 738,
                                        "nodeType": "Block",
                                        "src": "1362:608:2",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 652,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 643,
                                                                    "src": "1387:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                ],
                                                                "id": 651,
                                                                "name": "isList",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 765,
                                                                "src": "1380:6:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bool_$",
                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                                                }
                                                            },
                                                            "id": 653,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1380:12:2",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a204954454d5f4e4f545f4c495354",
                                                            "id": 654,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1394:26:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f123cbed484f934445d6a39665fff5168dc6c6036778b1cbcc1991fddd5026e0",
                                                                "typeString": "literal_string \"RLPReader: ITEM_NOT_LIST\""
                                                            },
                                                            "value": "RLPReader: ITEM_NOT_LIST"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f123cbed484f934445d6a39665fff5168dc6c6036778b1cbcc1991fddd5026e0",
                                                                "typeString": "literal_string \"RLPReader: ITEM_NOT_LIST\""
                                                            }
                                                        ],
                                                        "id": 650,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1372:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 655,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1372:49:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 656,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1372:49:2"
                                            },
                                            {
                                                "assignments": [
                                                    658
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 658,
                                                        "mutability": "mutable",
                                                        "name": "items",
                                                        "nameLocation": "1440:5:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 738,
                                                        "src": "1432:13:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 657,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1432:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 662,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 660,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 643,
                                                            "src": "1457:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        ],
                                                        "id": 659,
                                                        "name": "numItems",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1060,
                                                        "src": "1448:8:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 661,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1448:14:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1432:30:2"
                                            },
                                            {
                                                "assignments": [
                                                    667
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 667,
                                                        "mutability": "mutable",
                                                        "name": "result",
                                                        "nameLocation": "1489:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 738,
                                                        "src": "1472:23:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 665,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 664,
                                                                    "name": "RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "1472:7:2"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "1472:7:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 666,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "1472:9:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 674,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 672,
                                                            "name": "items",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 658,
                                                            "src": "1512:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 671,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "1498:13:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 669,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 668,
                                                                    "name": "RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "1502:7:2"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "1502:7:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 670,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "1502:9:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        }
                                                    },
                                                    "id": 673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1498:20:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1472:46:2"
                                            },
                                            {
                                                "assignments": [
                                                    676
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 676,
                                                        "mutability": "mutable",
                                                        "name": "listLength",
                                                        "nameLocation": "1536:10:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 738,
                                                        "src": "1528:18:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 675,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1528:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 681,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 678,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 643,
                                                                "src": "1561:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 679,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "1561:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 677,
                                                        "name": "_itemLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1118,
                                                        "src": "1549:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 680,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1549:24:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1528:45:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 686,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 683,
                                                                "name": "listLength",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 676,
                                                                "src": "1591:10:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 684,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 643,
                                                                    "src": "1605:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 685,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "1605:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1591:22:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a204c4953545f4445434f4445445f4c454e4754485f4d49534d41544348",
                                                            "id": 687,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1615:41:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_d380763e3d9c31160c029b74e83f27a28bdf022ebc85fc4124cb2b28a8eb26b7",
                                                                "typeString": "literal_string \"RLPReader: LIST_DECODED_LENGTH_MISMATCH\""
                                                            },
                                                            "value": "RLPReader: LIST_DECODED_LENGTH_MISMATCH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_d380763e3d9c31160c029b74e83f27a28bdf022ebc85fc4124cb2b28a8eb26b7",
                                                                "typeString": "literal_string \"RLPReader: LIST_DECODED_LENGTH_MISMATCH\""
                                                            }
                                                        ],
                                                        "id": 682,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1583:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 688,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1583:74:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 689,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1583:74:2"
                                            },
                                            {
                                                "assignments": [
                                                    691
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 691,
                                                        "mutability": "mutable",
                                                        "name": "memPtr",
                                                        "nameLocation": "1676:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 738,
                                                        "src": "1668:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 690,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1668:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 699,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 698,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 692,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 643,
                                                            "src": "1685:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 693,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "memPtr",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 612,
                                                        "src": "1685:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 695,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 643,
                                                                    "src": "1714:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 696,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "memPtr",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 612,
                                                                "src": "1714:11:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 694,
                                                            "name": "_payloadOffset",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1173,
                                                            "src": "1699:14:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                                "typeString": "function (uint256) pure returns (uint256)"
                                                            }
                                                        },
                                                        "id": 697,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1699:27:2",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1685:41:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1668:58:2"
                                            },
                                            {
                                                "assignments": [
                                                    701
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 701,
                                                        "mutability": "mutable",
                                                        "name": "dataLen",
                                                        "nameLocation": "1744:7:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 738,
                                                        "src": "1736:15:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 700,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1736:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 702,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1736:15:2"
                                            },
                                            {
                                                "body": {
                                                    "id": 734,
                                                    "nodeType": "Block",
                                                    "src": "1797:143:2",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 717,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 713,
                                                                    "name": "dataLen",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 701,
                                                                    "src": "1811:7:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 715,
                                                                            "name": "memPtr",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 691,
                                                                            "src": "1833:6:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 714,
                                                                        "name": "_itemLength",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1118,
                                                                        "src": "1821:11:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 716,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1821:19:2",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1811:29:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 718,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1811:29:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 726,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 719,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 667,
                                                                        "src": "1854:6:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 721,
                                                                    "indexExpression": {
                                                                        "id": 720,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 704,
                                                                        "src": "1861:1:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "1854:9:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 723,
                                                                            "name": "dataLen",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 701,
                                                                            "src": "1874:7:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 724,
                                                                            "name": "memPtr",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 691,
                                                                            "src": "1883:6:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 722,
                                                                        "name": "RLPItem",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 613,
                                                                        "src": "1866:7:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_struct$_RLPItem_$613_storage_ptr_$",
                                                                            "typeString": "type(struct RLPReader.RLPItem storage pointer)"
                                                                        }
                                                                    },
                                                                    "id": 725,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "structConstructorCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1866:24:2",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "src": "1854:36:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 727,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1854:36:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 732,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 728,
                                                                    "name": "memPtr",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 691,
                                                                    "src": "1904:6:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 731,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 729,
                                                                        "name": "memPtr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 691,
                                                                        "src": "1913:6:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "id": 730,
                                                                        "name": "dataLen",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 701,
                                                                        "src": "1922:7:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "1913:16:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1904:25:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 733,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1904:25:2"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 709,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 707,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 704,
                                                        "src": "1781:1:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 708,
                                                        "name": "items",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 658,
                                                        "src": "1785:5:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1781:9:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 735,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        704
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 704,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "1774:1:2",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 735,
                                                            "src": "1766:9:2",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 703,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1766:7:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 706,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 705,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1778:1:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "1766:13:2"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 711,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "1792:3:2",
                                                        "subExpression": {
                                                            "id": 710,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 704,
                                                            "src": "1792:1:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 712,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "1792:3:2"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "1761:179:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 736,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 667,
                                                    "src": "1957:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "functionReturnParameters": 649,
                                                "id": 737,
                                                "nodeType": "Return",
                                                "src": "1950:13:2"
                                            }
                                        ]
                                    },
                                    "id": 739,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toList",
                                    "nameLocation": "1293:6:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 644,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 643,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "1315:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 739,
                                                "src": "1300:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 642,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 641,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "1300:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "1300:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1299:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 649,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 648,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 739,
                                                "src": "1344:16:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 646,
                                                        "nodeType": "UserDefinedTypeName",
                                                        "pathNode": {
                                                            "id": 645,
                                                            "name": "RLPItem",
                                                            "nodeType": "IdentifierPath",
                                                            "referencedDeclaration": 613,
                                                            "src": "1344:7:2"
                                                        },
                                                        "referencedDeclaration": 613,
                                                        "src": "1344:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                            "typeString": "struct RLPReader.RLPItem"
                                                        }
                                                    },
                                                    "id": 647,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "1344:9:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1343:18:2"
                                    },
                                    "scope": 1220,
                                    "src": "1284:686:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 764,
                                        "nodeType": "Block",
                                        "src": "2140:213:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    748
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 748,
                                                        "mutability": "mutable",
                                                        "name": "byte0",
                                                        "nameLocation": "2156:5:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 764,
                                                        "src": "2150:11:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        },
                                                        "typeName": {
                                                            "id": 747,
                                                            "name": "uint8",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2150:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 749,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2150:11:2"
                                            },
                                            {
                                                "assignments": [
                                                    751
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 751,
                                                        "mutability": "mutable",
                                                        "name": "memPtr",
                                                        "nameLocation": "2179:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 764,
                                                        "src": "2171:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 750,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2171:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 754,
                                                "initialValue": {
                                                    "expression": {
                                                        "id": 752,
                                                        "name": "item",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 742,
                                                        "src": "2188:4:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                        }
                                                    },
                                                    "id": 753,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "memPtr",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 612,
                                                    "src": "2188:11:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2171:28:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2218:55:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2232:31:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2246:1:2",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2255:6:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2249:5:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2249:13:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "byte",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2241:4:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2241:22:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "byte0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2232:5:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 748,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "2232:5:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 751,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "2255:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 755,
                                                "nodeType": "InlineAssembly",
                                                "src": "2209:64:2"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    },
                                                    "id": 758,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 756,
                                                        "name": "byte0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 748,
                                                        "src": "2287:5:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 757,
                                                        "name": "LIST_SHORT_START",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 602,
                                                        "src": "2295:16:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "src": "2287:24:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 761,
                                                "nodeType": "IfStatement",
                                                "src": "2283:42:2",
                                                "trueBody": {
                                                    "expression": {
                                                        "hexValue": "66616c7365",
                                                        "id": 759,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2320:5:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "functionReturnParameters": 746,
                                                    "id": 760,
                                                    "nodeType": "Return",
                                                    "src": "2313:12:2"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 762,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2342:4:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 746,
                                                "id": 763,
                                                "nodeType": "Return",
                                                "src": "2335:11:2"
                                            }
                                        ]
                                    },
                                    "id": 765,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isList",
                                    "nameLocation": "2083:6:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 743,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 742,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "2105:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 765,
                                                "src": "2090:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 741,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 740,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "2090:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "2090:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2089:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 746,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 745,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 765,
                                                "src": "2134:4:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 744,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2134:4:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2133:6:2"
                                    },
                                    "scope": 1220,
                                    "src": "2074:279:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 796,
                                        "nodeType": "Block",
                                        "src": "2528:212:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    775
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 775,
                                                        "mutability": "mutable",
                                                        "name": "result",
                                                        "nameLocation": "2551:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 796,
                                                        "src": "2538:19:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 774,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2538:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 781,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 778,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 769,
                                                                "src": "2570:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 779,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "len",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 610,
                                                            "src": "2570:8:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 777,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "2560:9:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 776,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2564:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 780,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2560:19:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2538:41:2"
                                            },
                                            {
                                                "assignments": [
                                                    783
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 783,
                                                        "mutability": "mutable",
                                                        "name": "ptr",
                                                        "nameLocation": "2598:3:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 796,
                                                        "src": "2590:11:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 782,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2590:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 784,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2590:11:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2620:48:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2634:24:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2645:4:2",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    },
                                                                    {
                                                                        "name": "result",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2651:6:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2641:3:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2641:17:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ptr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2634:3:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 783,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "2634:3:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 775,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "2651:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 785,
                                                "nodeType": "InlineAssembly",
                                                "src": "2611:57:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 787,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 769,
                                                                "src": "2683:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 788,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "2683:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 789,
                                                            "name": "ptr",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 783,
                                                            "src": "2696:3:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 790,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 769,
                                                                "src": "2701:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 791,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "len",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 610,
                                                            "src": "2701:8:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 786,
                                                        "name": "copy",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1219,
                                                        "src": "2678:4:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 792,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2678:32:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 793,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2678:32:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 794,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 775,
                                                    "src": "2727:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 773,
                                                "id": 795,
                                                "nodeType": "Return",
                                                "src": "2720:13:2"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 766,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2359:43:2",
                                        "text": "RLPItem conversions into data types *"
                                    },
                                    "id": 797,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toRlpBytes",
                                    "nameLocation": "2459:10:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 770,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 769,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "2485:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 797,
                                                "src": "2470:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 768,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 767,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "2470:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "2470:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2469:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 773,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 772,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 797,
                                                "src": "2514:12:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 771,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2514:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2513:14:2"
                                    },
                                    "scope": 1220,
                                    "src": "2450:290:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 831,
                                        "nodeType": "Block",
                                        "src": "2818:236:2",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 809,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "!",
                                                            "prefix": true,
                                                            "src": "2836:13:2",
                                                            "subExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 807,
                                                                        "name": "item",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 800,
                                                                        "src": "2844:4:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    ],
                                                                    "id": 806,
                                                                    "name": "isList",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 765,
                                                                    "src": "2837:6:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bool_$",
                                                                        "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                                                    }
                                                                },
                                                                "id": 808,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2837:12:2",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a204445434f44494e475f4c4953545f41535f41444452455353",
                                                            "id": 810,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2851:37:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_7824a3d127335ed9e936f7e491079b62c51ea1aeb375cc5376f2605fae955183",
                                                                "typeString": "literal_string \"RLPReader: DECODING_LIST_AS_ADDRESS\""
                                                            },
                                                            "value": "RLPReader: DECODING_LIST_AS_ADDRESS"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_7824a3d127335ed9e936f7e491079b62c51ea1aeb375cc5376f2605fae955183",
                                                                "typeString": "literal_string \"RLPReader: DECODING_LIST_AS_ADDRESS\""
                                                            }
                                                        ],
                                                        "id": 805,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2828:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 811,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2828:61:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 812,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2828:61:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 817,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 814,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 800,
                                                                    "src": "2947:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 815,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "2947:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "3231",
                                                                "id": 816,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2959:2:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_21_by_1",
                                                                    "typeString": "int_const 21"
                                                                },
                                                                "value": "21"
                                                            },
                                                            "src": "2947:14:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a20494e56414c49445f414444524553535f4c454e475448",
                                                            "id": 818,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2963:35:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fcf38d9667b57f186bf663fb732ca8c4766004ced554019f9a34d9c6c20fb848",
                                                                "typeString": "literal_string \"RLPReader: INVALID_ADDRESS_LENGTH\""
                                                            },
                                                            "value": "RLPReader: INVALID_ADDRESS_LENGTH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fcf38d9667b57f186bf663fb732ca8c4766004ced554019f9a34d9c6c20fb848",
                                                                "typeString": "literal_string \"RLPReader: INVALID_ADDRESS_LENGTH\""
                                                            }
                                                        ],
                                                        "id": 813,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2939:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 819,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2939:60:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 820,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2939:60:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 826,
                                                                            "name": "item",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 800,
                                                                            "src": "3040:4:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        ],
                                                                        "id": 825,
                                                                        "name": "toUint",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 899,
                                                                        "src": "3033:6:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 827,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3033:12:2",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 824,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3025:7:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint160_$",
                                                                    "typeString": "type(uint160)"
                                                                },
                                                                "typeName": {
                                                                    "id": 823,
                                                                    "name": "uint160",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3025:7:2",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 828,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3025:21:2",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint160",
                                                                "typeString": "uint160"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint160",
                                                                "typeString": "uint160"
                                                            }
                                                        ],
                                                        "id": 822,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "3017:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 821,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3017:7:2",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 829,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3017:30:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 804,
                                                "id": 830,
                                                "nodeType": "Return",
                                                "src": "3010:37:2"
                                            }
                                        ]
                                    },
                                    "id": 832,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toAddress",
                                    "nameLocation": "2755:9:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 801,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 800,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "2780:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 832,
                                                "src": "2765:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 799,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 798,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "2765:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "2765:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2764:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 804,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 803,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 832,
                                                "src": "2809:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 802,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2809:7:2",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2808:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "2746:308:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 898,
                                        "nodeType": "Block",
                                        "src": "3129:702:2",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 844,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "!",
                                                            "prefix": true,
                                                            "src": "3147:13:2",
                                                            "subExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 842,
                                                                        "name": "item",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 835,
                                                                        "src": "3155:4:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    ],
                                                                    "id": 841,
                                                                    "name": "isList",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 765,
                                                                    "src": "3148:6:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bool_$",
                                                                        "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bool)"
                                                                    }
                                                                },
                                                                "id": 843,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3148:12:2",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a204445434f44494e475f4c4953545f41535f55494e54",
                                                            "id": 845,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3162:34:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1cdc94e82433661912e46ce5baf843a7cb245fb72f84e014f068509dec47bec0",
                                                                "typeString": "literal_string \"RLPReader: DECODING_LIST_AS_UINT\""
                                                            },
                                                            "value": "RLPReader: DECODING_LIST_AS_UINT"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1cdc94e82433661912e46ce5baf843a7cb245fb72f84e014f068509dec47bec0",
                                                                "typeString": "literal_string \"RLPReader: DECODING_LIST_AS_UINT\""
                                                            }
                                                        ],
                                                        "id": 840,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3139:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 846,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3139:58:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 847,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3139:58:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 852,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 849,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 835,
                                                                    "src": "3215:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 850,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "3215:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "hexValue": "3333",
                                                                "id": 851,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3227:2:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_33_by_1",
                                                                    "typeString": "int_const 33"
                                                                },
                                                                "value": "33"
                                                            },
                                                            "src": "3215:14:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a20494e56414c49445f55494e545f4c454e475448",
                                                            "id": 853,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3231:32:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c87802e46f463fe7ec66b5c9c4abfacd288c63dbd8ff9c0199a4d2e42f009a6a",
                                                                "typeString": "literal_string \"RLPReader: INVALID_UINT_LENGTH\""
                                                            },
                                                            "value": "RLPReader: INVALID_UINT_LENGTH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c87802e46f463fe7ec66b5c9c4abfacd288c63dbd8ff9c0199a4d2e42f009a6a",
                                                                "typeString": "literal_string \"RLPReader: INVALID_UINT_LENGTH\""
                                                            }
                                                        ],
                                                        "id": 848,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3207:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 854,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3207:57:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 855,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3207:57:2"
                                            },
                                            {
                                                "assignments": [
                                                    857
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 857,
                                                        "mutability": "mutable",
                                                        "name": "itemLength",
                                                        "nameLocation": "3283:10:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 898,
                                                        "src": "3275:18:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 856,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3275:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 862,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 859,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 835,
                                                                "src": "3308:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 860,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "3308:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 858,
                                                        "name": "_itemLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1118,
                                                        "src": "3296:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 861,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3296:24:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3275:45:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 867,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 864,
                                                                "name": "itemLength",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 857,
                                                                "src": "3338:10:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 865,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 835,
                                                                    "src": "3352:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 866,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "3352:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "3338:22:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a2055494e545f4445434f4445445f4c454e4754485f4d49534d41544348",
                                                            "id": 868,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3362:41:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fccadfb3437d5fa6c127326a4d82fbc5c91988402716059592ab95e3904e5807",
                                                                "typeString": "literal_string \"RLPReader: UINT_DECODED_LENGTH_MISMATCH\""
                                                            },
                                                            "value": "RLPReader: UINT_DECODED_LENGTH_MISMATCH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fccadfb3437d5fa6c127326a4d82fbc5c91988402716059592ab95e3904e5807",
                                                                "typeString": "literal_string \"RLPReader: UINT_DECODED_LENGTH_MISMATCH\""
                                                            }
                                                        ],
                                                        "id": 863,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3330:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 869,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3330:74:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 870,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3330:74:2"
                                            },
                                            {
                                                "assignments": [
                                                    872
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 872,
                                                        "mutability": "mutable",
                                                        "name": "offset",
                                                        "nameLocation": "3423:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 898,
                                                        "src": "3415:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 871,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3415:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 877,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 874,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 835,
                                                                "src": "3447:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 875,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "3447:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 873,
                                                        "name": "_payloadOffset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1173,
                                                        "src": "3432:14:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 876,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3432:27:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3415:44:2"
                                            },
                                            {
                                                "assignments": [
                                                    879
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 879,
                                                        "mutability": "mutable",
                                                        "name": "len",
                                                        "nameLocation": "3477:3:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 898,
                                                        "src": "3469:11:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 878,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3469:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 884,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 883,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 880,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 835,
                                                            "src": "3483:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 881,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "len",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 610,
                                                        "src": "3483:8:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 882,
                                                        "name": "offset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 872,
                                                        "src": "3494:6:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3483:17:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3469:31:2"
                                            },
                                            {
                                                "assignments": [
                                                    886
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 886,
                                                        "mutability": "mutable",
                                                        "name": "result",
                                                        "nameLocation": "3518:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 898,
                                                        "src": "3510:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 885,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3510:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 887,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3510:14:2"
                                            },
                                            {
                                                "assignments": [
                                                    889
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 889,
                                                        "mutability": "mutable",
                                                        "name": "memPtr",
                                                        "nameLocation": "3542:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 898,
                                                        "src": "3534:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 888,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3534:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 894,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 893,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 890,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 835,
                                                            "src": "3551:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 891,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "memPtr",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 612,
                                                        "src": "3551:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 892,
                                                        "name": "offset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 872,
                                                        "src": "3565:6:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3551:20:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3534:37:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3590:211:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3604:23:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3620:6:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3614:5:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3614:13:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "result",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3604:6:2"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3714:77:2",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3732:45:2",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "result",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3746:6:2"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "3758:3:2",
                                                                                            "type": "",
                                                                                            "value": "256"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "3767:2:2",
                                                                                                    "type": "",
                                                                                                    "value": "32"
                                                                                                },
                                                                                                {
                                                                                                    "name": "len",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3771:3:2"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3763:3:2"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3763:12:2"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "exp",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3754:3:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3754:22:2"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "div",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3742:3:2"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3742:35:2"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "result",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3732:6:2"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "len",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3705:3:2"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3710:2:2",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3702:2:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3702:11:2"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3699:92:2"
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 879,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3705:3:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 879,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3771:3:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 889,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3620:6:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 886,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3604:6:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 886,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3732:6:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 886,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "3746:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 895,
                                                "nodeType": "InlineAssembly",
                                                "src": "3581:220:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 896,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 886,
                                                    "src": "3818:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 839,
                                                "id": 897,
                                                "nodeType": "Return",
                                                "src": "3811:13:2"
                                            }
                                        ]
                                    },
                                    "id": 899,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUint",
                                    "nameLocation": "3069:6:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 836,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 835,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "3091:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 899,
                                                "src": "3076:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 834,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 833,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "3076:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "3076:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3075:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 839,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 838,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 899,
                                                "src": "3120:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 837,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3120:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3119:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "3060:771:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 943,
                                        "nodeType": "Block",
                                        "src": "3943:410:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    908
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 908,
                                                        "mutability": "mutable",
                                                        "name": "itemLength",
                                                        "nameLocation": "3961:10:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 943,
                                                        "src": "3953:18:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 907,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3953:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 913,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 910,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 902,
                                                                "src": "3986:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 911,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "3986:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 909,
                                                        "name": "_itemLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1118,
                                                        "src": "3974:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 912,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3974:24:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3953:45:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 918,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 915,
                                                                "name": "itemLength",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 908,
                                                                "src": "4016:10:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 916,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 902,
                                                                    "src": "4030:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 917,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "4030:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4016:22:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a2055494e545f5354524943545f4445434f4445445f4c454e4754485f4d49534d41544348",
                                                            "id": 919,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4040:48:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ed41bb6165937d177fd48f90c2bb4c53a07eccd56f290fd5acebf84750ad35ab",
                                                                "typeString": "literal_string \"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\""
                                                            },
                                                            "value": "RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ed41bb6165937d177fd48f90c2bb4c53a07eccd56f290fd5acebf84750ad35ab",
                                                                "typeString": "literal_string \"RLPReader: UINT_STRICT_DECODED_LENGTH_MISMATCH\""
                                                            }
                                                        ],
                                                        "id": 914,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4008:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 920,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4008:81:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 921,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4008:81:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 926,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 923,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 902,
                                                                    "src": "4134:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 924,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "4134:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "3333",
                                                                "id": 925,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4146:2:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_33_by_1",
                                                                    "typeString": "int_const 33"
                                                                },
                                                                "value": "33"
                                                            },
                                                            "src": "4134:14:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a20494e56414c49445f55494e545f5354524943545f4c454e475448",
                                                            "id": 927,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4150:39:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_05854b91c5a8939a4d0027be685b196c234951d4713f8a0d4aa377884f89467e",
                                                                "typeString": "literal_string \"RLPReader: INVALID_UINT_STRICT_LENGTH\""
                                                            },
                                                            "value": "RLPReader: INVALID_UINT_STRICT_LENGTH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_05854b91c5a8939a4d0027be685b196c234951d4713f8a0d4aa377884f89467e",
                                                                "typeString": "literal_string \"RLPReader: INVALID_UINT_STRICT_LENGTH\""
                                                            }
                                                        ],
                                                        "id": 922,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4126:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 928,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4126:64:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 929,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4126:64:2"
                                            },
                                            {
                                                "assignments": [
                                                    931
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 931,
                                                        "mutability": "mutable",
                                                        "name": "result",
                                                        "nameLocation": "4209:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 943,
                                                        "src": "4201:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 930,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4201:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 932,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4201:14:2"
                                            },
                                            {
                                                "assignments": [
                                                    934
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 934,
                                                        "mutability": "mutable",
                                                        "name": "memPtr",
                                                        "nameLocation": "4233:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 943,
                                                        "src": "4225:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 933,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4225:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 939,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 938,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 935,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 902,
                                                            "src": "4242:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 936,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "memPtr",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 612,
                                                        "src": "4242:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 937,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4256:1:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "4242:15:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4225:32:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4276:47:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4290:23:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4306:6:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4300:5:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4300:13:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "result",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4290:6:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 934,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "4306:6:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 931,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "4290:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 940,
                                                "nodeType": "InlineAssembly",
                                                "src": "4267:56:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 941,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 931,
                                                    "src": "4340:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 906,
                                                "id": 942,
                                                "nodeType": "Return",
                                                "src": "4333:13:2"
                                            }
                                        ]
                                    },
                                    "id": 944,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUintStrict",
                                    "nameLocation": "3877:12:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 903,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 902,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "3905:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "3890:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 901,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 900,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "3890:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "3890:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3889:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 906,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 905,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "3934:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 904,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3934:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3933:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "3868:485:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1003,
                                        "nodeType": "Block",
                                        "src": "4434:474:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    953
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 953,
                                                        "mutability": "mutable",
                                                        "name": "listLength",
                                                        "nameLocation": "4452:10:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1003,
                                                        "src": "4444:18:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 952,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4444:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 958,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 955,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 947,
                                                                "src": "4477:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 956,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "4477:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 954,
                                                        "name": "_itemLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1118,
                                                        "src": "4465:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 957,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4465:24:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4444:45:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 963,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 960,
                                                                "name": "listLength",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 953,
                                                                "src": "4507:10:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 961,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 947,
                                                                    "src": "4521:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 962,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "len",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 610,
                                                                "src": "4521:8:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4507:22:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "524c505265616465723a2042595445535f4445434f4445445f4c454e4754485f4d49534d41544348",
                                                            "id": 964,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4531:42:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_5f64161a035cfa36c7e036a3644af4c72842f949a2d961b5a575779b2b7d7d9f",
                                                                "typeString": "literal_string \"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\""
                                                            },
                                                            "value": "RLPReader: BYTES_DECODED_LENGTH_MISMATCH"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_5f64161a035cfa36c7e036a3644af4c72842f949a2d961b5a575779b2b7d7d9f",
                                                                "typeString": "literal_string \"RLPReader: BYTES_DECODED_LENGTH_MISMATCH\""
                                                            }
                                                        ],
                                                        "id": 959,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4499:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 965,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4499:75:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 966,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4499:75:2"
                                            },
                                            {
                                                "assignments": [
                                                    968
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 968,
                                                        "mutability": "mutable",
                                                        "name": "offset",
                                                        "nameLocation": "4592:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1003,
                                                        "src": "4584:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 967,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4584:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 973,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 970,
                                                                "name": "item",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 947,
                                                                "src": "4616:4:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 971,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "memPtr",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 612,
                                                            "src": "4616:11:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 969,
                                                        "name": "_payloadOffset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1173,
                                                        "src": "4601:14:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 972,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4601:27:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4584:44:2"
                                            },
                                            {
                                                "assignments": [
                                                    975
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 975,
                                                        "mutability": "mutable",
                                                        "name": "len",
                                                        "nameLocation": "4647:3:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1003,
                                                        "src": "4639:11:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 974,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4639:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 980,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 979,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 976,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 947,
                                                            "src": "4653:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 977,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "len",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 610,
                                                        "src": "4653:8:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 978,
                                                        "name": "offset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 968,
                                                        "src": "4664:6:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4653:17:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4639:31:2"
                                            },
                                            {
                                                "assignments": [
                                                    982
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 982,
                                                        "mutability": "mutable",
                                                        "name": "result",
                                                        "nameLocation": "4708:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1003,
                                                        "src": "4695:19:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 981,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4695:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 987,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 985,
                                                            "name": "len",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 975,
                                                            "src": "4727:3:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 984,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "4717:9:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 983,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4721:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 986,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4717:14:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4695:36:2"
                                            },
                                            {
                                                "assignments": [
                                                    989
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 989,
                                                        "mutability": "mutable",
                                                        "name": "destPtr",
                                                        "nameLocation": "4750:7:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1003,
                                                        "src": "4742:15:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 988,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4742:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 990,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4742:15:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4776:52:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4790:28:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4805:4:2",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    },
                                                                    {
                                                                        "name": "result",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4811:6:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4801:3:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4801:17:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "destPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4790:7:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 989,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "4790:7:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 982,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "4811:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 991,
                                                "nodeType": "InlineAssembly",
                                                "src": "4767:61:2"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 996,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 993,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 947,
                                                                    "src": "4843:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 994,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "memPtr",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 612,
                                                                "src": "4843:11:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 995,
                                                                "name": "offset",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 968,
                                                                "src": "4857:6:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4843:20:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 997,
                                                            "name": "destPtr",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 989,
                                                            "src": "4865:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 998,
                                                            "name": "len",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 975,
                                                            "src": "4874:3:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 992,
                                                        "name": "copy",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1219,
                                                        "src": "4838:4:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 999,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4838:40:2",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1000,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4838:40:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1001,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 982,
                                                    "src": "4895:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 951,
                                                "id": 1002,
                                                "nodeType": "Return",
                                                "src": "4888:13:2"
                                            }
                                        ]
                                    },
                                    "id": 1004,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toBytes",
                                    "nameLocation": "4368:7:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 948,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 947,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "4391:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1004,
                                                "src": "4376:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 946,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 945,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "4376:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "4376:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4375:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 951,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 950,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1004,
                                                "src": "4420:12:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 949,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4420:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4419:14:2"
                                    },
                                    "scope": 1220,
                                    "src": "4359:549:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1059,
                                        "nodeType": "Block",
                                        "src": "5086:576:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1013
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1013,
                                                        "mutability": "mutable",
                                                        "name": "count",
                                                        "nameLocation": "5276:5:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1059,
                                                        "src": "5268:13:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1012,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5268:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1015,
                                                "initialValue": {
                                                    "hexValue": "30",
                                                    "id": 1014,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5284:1:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5268:17:2"
                                            },
                                            {
                                                "assignments": [
                                                    1017
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1017,
                                                        "mutability": "mutable",
                                                        "name": "currPtr",
                                                        "nameLocation": "5303:7:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1059,
                                                        "src": "5295:15:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1016,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5295:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1025,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1024,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1018,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1007,
                                                            "src": "5313:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1019,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "memPtr",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 612,
                                                        "src": "5313:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 1021,
                                                                    "name": "item",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1007,
                                                                    "src": "5342:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 1022,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "memPtr",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 612,
                                                                "src": "5342:11:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 1020,
                                                            "name": "_payloadOffset",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1173,
                                                            "src": "5327:14:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                                "typeString": "function (uint256) pure returns (uint256)"
                                                            }
                                                        },
                                                        "id": 1023,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5327:27:2",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5313:41:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5295:59:2"
                                            },
                                            {
                                                "assignments": [
                                                    1027
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1027,
                                                        "mutability": "mutable",
                                                        "name": "endPtr",
                                                        "nameLocation": "5372:6:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1059,
                                                        "src": "5364:14:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1026,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5364:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1033,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1032,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1028,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1007,
                                                            "src": "5381:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1029,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "memPtr",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 612,
                                                        "src": "5381:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 1030,
                                                            "name": "item",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1007,
                                                            "src": "5395:4:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1031,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "len",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 610,
                                                        "src": "5395:8:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5381:22:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5364:39:2"
                                            },
                                            {
                                                "body": {
                                                    "id": 1055,
                                                    "nodeType": "Block",
                                                    "src": "5438:195:2",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1043,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1037,
                                                                    "name": "currPtr",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1017,
                                                                    "src": "5452:7:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1042,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1038,
                                                                        "name": "currPtr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1017,
                                                                        "src": "5462:7:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1040,
                                                                                "name": "currPtr",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1017,
                                                                                "src": "5484:7:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "id": 1039,
                                                                            "name": "_itemLength",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1118,
                                                                            "src": "5472:11:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1041,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5472:20:2",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "5462:30:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "5452:40:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1044,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "5452:40:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1048,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1046,
                                                                            "name": "currPtr",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1017,
                                                                            "src": "5535:7:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "<=",
                                                                        "rightExpression": {
                                                                            "id": 1047,
                                                                            "name": "endPtr",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1027,
                                                                            "src": "5546:6:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "src": "5535:17:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "524c505265616465723a204e554d5f4954454d535f4445434f4445445f4c454e4754485f4d49534d41544348",
                                                                        "id": 1049,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "5554:46:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_68bde7d355c4003837b5291615334168a98d4d478d3a9751777badd07418ccc2",
                                                                            "typeString": "literal_string \"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\""
                                                                        },
                                                                        "value": "RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_68bde7d355c4003837b5291615334168a98d4d478d3a9751777badd07418ccc2",
                                                                            "typeString": "literal_string \"RLPReader: NUM_ITEMS_DECODED_LENGTH_MISMATCH\""
                                                                        }
                                                                    ],
                                                                    "id": 1045,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "5527:7:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 1050,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5527:74:2",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1051,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "5527:74:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1053,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "5615:7:2",
                                                                "subExpression": {
                                                                    "id": 1052,
                                                                    "name": "count",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1013,
                                                                    "src": "5615:5:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1054,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "5615:7:2"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1036,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1034,
                                                        "name": "currPtr",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1017,
                                                        "src": "5420:7:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 1035,
                                                        "name": "endPtr",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1027,
                                                        "src": "5430:6:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5420:16:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1056,
                                                "nodeType": "WhileStatement",
                                                "src": "5413:220:2"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1057,
                                                    "name": "count",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1013,
                                                    "src": "5650:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1011,
                                                "id": 1058,
                                                "nodeType": "Return",
                                                "src": "5643:12:2"
                                            }
                                        ]
                                    },
                                    "id": 1060,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "numItems",
                                    "nameLocation": "5025:8:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1008,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1007,
                                                "mutability": "mutable",
                                                "name": "item",
                                                "nameLocation": "5049:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1060,
                                                "src": "5034:19:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                    "typeString": "struct RLPReader.RLPItem"
                                                },
                                                "typeName": {
                                                    "id": 1006,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1005,
                                                        "name": "RLPItem",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 613,
                                                        "src": "5034:7:2"
                                                    },
                                                    "referencedDeclaration": 613,
                                                    "src": "5034:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                        "typeString": "struct RLPReader.RLPItem"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5033:21:2"
                                    },
                                    "returnParameters": {
                                        "id": 1011,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1010,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1060,
                                                "src": "5077:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1009,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5077:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5076:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "5016:646:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 1117,
                                        "nodeType": "Block",
                                        "src": "5779:1163:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1068
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1068,
                                                        "mutability": "mutable",
                                                        "name": "itemLen",
                                                        "nameLocation": "5797:7:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1117,
                                                        "src": "5789:15:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1067,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5789:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1069,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5789:15:2"
                                            },
                                            {
                                                "assignments": [
                                                    1071
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1071,
                                                        "mutability": "mutable",
                                                        "name": "byte0",
                                                        "nameLocation": "5822:5:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1117,
                                                        "src": "5814:13:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1070,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5814:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1072,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5814:13:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5846:55:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5860:31:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5874:1:2",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5883:6:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5877:5:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5877:13:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "byte",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5869:4:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5869:22:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "byte0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5860:5:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 1071,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "5860:5:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 1062,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "5883:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 1073,
                                                "nodeType": "InlineAssembly",
                                                "src": "5837:64:2"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1076,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1074,
                                                        "name": "byte0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1071,
                                                        "src": "5915:5:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 1075,
                                                        "name": "STRING_SHORT_START",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 596,
                                                        "src": "5923:18:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "src": "5915:26:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1083,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1081,
                                                            "name": "byte0",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1071,
                                                            "src": "5973:5:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 1082,
                                                            "name": "STRING_LONG_START",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 599,
                                                            "src": "5981:17:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "src": "5973:25:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseBody": {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1094,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1092,
                                                                "name": "byte0",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1071,
                                                                "src": "6059:5:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "id": 1093,
                                                                "name": "LIST_SHORT_START",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 602,
                                                                "src": "6067:16:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "src": "6059:24:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "falseBody": {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1099,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1097,
                                                                    "name": "byte0",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1071,
                                                                    "src": "6504:5:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<",
                                                                "rightExpression": {
                                                                    "id": 1098,
                                                                    "name": "LIST_LONG_START",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 605,
                                                                    "src": "6512:15:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "src": "6504:23:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 1110,
                                                                "nodeType": "Block",
                                                                "src": "6598:313:2",
                                                                "statements": [
                                                                    {
                                                                        "AST": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "6621:280:2",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulVariableDeclaration",
                                                                                    "src": "6639:31:2",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "byte0",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6658:5:2"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6665:4:2",
                                                                                                "type": "",
                                                                                                "value": "0xf7"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6654:3:2"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6654:16:2"
                                                                                    },
                                                                                    "variables": [
                                                                                        {
                                                                                            "name": "byteLen",
                                                                                            "nodeType": "YulTypedName",
                                                                                            "src": "6643:7:2",
                                                                                            "type": ""
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "nodeType": "YulAssignment",
                                                                                    "src": "6687:24:2",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "memPtr",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6701:6:2"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6709:1:2",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6697:3:2"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6697:14:2"
                                                                                    },
                                                                                    "variableNames": [
                                                                                        {
                                                                                            "name": "memPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6687:6:2"
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "nodeType": "YulVariableDeclaration",
                                                                                    "src": "6729:61:2",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "memPtr",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "6754:6:2"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "mload",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6748:5:2"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6748:13:2"
                                                                                            },
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "6767:3:2",
                                                                                                        "type": "",
                                                                                                        "value": "256"
                                                                                                    },
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "kind": "number",
                                                                                                                "nodeType": "YulLiteral",
                                                                                                                "src": "6776:2:2",
                                                                                                                "type": "",
                                                                                                                "value": "32"
                                                                                                            },
                                                                                                            {
                                                                                                                "name": "byteLen",
                                                                                                                "nodeType": "YulIdentifier",
                                                                                                                "src": "6780:7:2"
                                                                                                            }
                                                                                                        ],
                                                                                                        "functionName": {
                                                                                                            "name": "sub",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "6772:3:2"
                                                                                                        },
                                                                                                        "nodeType": "YulFunctionCall",
                                                                                                        "src": "6772:16:2"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "exp",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6763:3:2"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6763:26:2"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "div",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6744:3:2"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6744:46:2"
                                                                                    },
                                                                                    "variables": [
                                                                                        {
                                                                                            "name": "dataLen",
                                                                                            "nodeType": "YulTypedName",
                                                                                            "src": "6733:7:2",
                                                                                            "type": ""
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "nodeType": "YulAssignment",
                                                                                    "src": "6847:40:2",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "dataLen",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6862:7:2"
                                                                                            },
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "byteLen",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "6875:7:2"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "6884:1:2",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6871:3:2"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6871:15:2"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6858:3:2"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6858:29:2"
                                                                                    },
                                                                                    "variableNames": [
                                                                                        {
                                                                                            "name": "itemLen",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6847:7:2"
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        "evmVersion": "london",
                                                                        "externalReferences": [
                                                                            {
                                                                                "declaration": 1071,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "6658:5:2",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1068,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "6847:7:2",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1062,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "6687:6:2",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1062,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "6701:6:2",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1062,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "6754:6:2",
                                                                                "valueSize": 1
                                                                            }
                                                                        ],
                                                                        "id": 1109,
                                                                        "nodeType": "InlineAssembly",
                                                                        "src": "6612:289:2"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 1111,
                                                            "nodeType": "IfStatement",
                                                            "src": "6500:411:2",
                                                            "trueBody": {
                                                                "id": 1108,
                                                                "nodeType": "Block",
                                                                "src": "6529:63:2",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 1106,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 1100,
                                                                                "name": "itemLen",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1068,
                                                                                "src": "6543:7:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                "id": 1105,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 1103,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 1101,
                                                                                        "name": "byte0",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1071,
                                                                                        "src": "6553:5:2",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "-",
                                                                                    "rightExpression": {
                                                                                        "id": 1102,
                                                                                        "name": "LIST_SHORT_START",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 602,
                                                                                        "src": "6561:16:2",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint8",
                                                                                            "typeString": "uint8"
                                                                                        }
                                                                                    },
                                                                                    "src": "6553:24:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "+",
                                                                                "rightExpression": {
                                                                                    "hexValue": "31",
                                                                                    "id": 1104,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "6580:1:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    "value": "1"
                                                                                },
                                                                                "src": "6553:28:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "6543:38:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 1107,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "6543:38:2"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        "id": 1112,
                                                        "nodeType": "IfStatement",
                                                        "src": "6055:856:2",
                                                        "trueBody": {
                                                            "id": 1096,
                                                            "nodeType": "Block",
                                                            "src": "6085:409:2",
                                                            "statements": [
                                                                {
                                                                    "AST": {
                                                                        "nodeType": "YulBlock",
                                                                        "src": "6108:376:2",
                                                                        "statements": [
                                                                            {
                                                                                "nodeType": "YulVariableDeclaration",
                                                                                "src": "6126:31:2",
                                                                                "value": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "byte0",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6145:5:2"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "6152:4:2",
                                                                                            "type": "",
                                                                                            "value": "0xb7"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "sub",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6141:3:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6141:16:2"
                                                                                },
                                                                                "variables": [
                                                                                    {
                                                                                        "name": "byteLen",
                                                                                        "nodeType": "YulTypedName",
                                                                                        "src": "6130:7:2",
                                                                                        "type": ""
                                                                                    }
                                                                                ]
                                                                            },
                                                                            {
                                                                                "nodeType": "YulAssignment",
                                                                                "src": "6209:24:2",
                                                                                "value": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "memPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6223:6:2"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "6231:1:2",
                                                                                            "type": "",
                                                                                            "value": "1"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6219:3:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6219:14:2"
                                                                                },
                                                                                "variableNames": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6209:6:2"
                                                                                    }
                                                                                ]
                                                                            },
                                                                            {
                                                                                "nodeType": "YulVariableDeclaration",
                                                                                "src": "6319:61:2",
                                                                                "value": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "memPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6344:6:2"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "mload",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6338:5:2"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "6338:13:2"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "6357:3:2",
                                                                                                    "type": "",
                                                                                                    "value": "256"
                                                                                                },
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "kind": "number",
                                                                                                            "nodeType": "YulLiteral",
                                                                                                            "src": "6366:2:2",
                                                                                                            "type": "",
                                                                                                            "value": "32"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "byteLen",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "6370:7:2"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "sub",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "6362:3:2"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "6362:16:2"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "exp",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6353:3:2"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "6353:26:2"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "div",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6334:3:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6334:46:2"
                                                                                },
                                                                                "variables": [
                                                                                    {
                                                                                        "name": "dataLen",
                                                                                        "nodeType": "YulTypedName",
                                                                                        "src": "6323:7:2",
                                                                                        "type": ""
                                                                                    }
                                                                                ]
                                                                            },
                                                                            {
                                                                                "nodeType": "YulAssignment",
                                                                                "src": "6430:40:2",
                                                                                "value": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dataLen",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6445:7:2"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "byteLen",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6458:7:2"
                                                                                                },
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "6467:1:2",
                                                                                                    "type": "",
                                                                                                    "value": "1"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6454:3:2"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "6454:15:2"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6441:3:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6441:29:2"
                                                                                },
                                                                                "variableNames": [
                                                                                    {
                                                                                        "name": "itemLen",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6430:7:2"
                                                                                    }
                                                                                ]
                                                                            }
                                                                        ]
                                                                    },
                                                                    "evmVersion": "london",
                                                                    "externalReferences": [
                                                                        {
                                                                            "declaration": 1071,
                                                                            "isOffset": false,
                                                                            "isSlot": false,
                                                                            "src": "6145:5:2",
                                                                            "valueSize": 1
                                                                        },
                                                                        {
                                                                            "declaration": 1068,
                                                                            "isOffset": false,
                                                                            "isSlot": false,
                                                                            "src": "6430:7:2",
                                                                            "valueSize": 1
                                                                        },
                                                                        {
                                                                            "declaration": 1062,
                                                                            "isOffset": false,
                                                                            "isSlot": false,
                                                                            "src": "6209:6:2",
                                                                            "valueSize": 1
                                                                        },
                                                                        {
                                                                            "declaration": 1062,
                                                                            "isOffset": false,
                                                                            "isSlot": false,
                                                                            "src": "6223:6:2",
                                                                            "valueSize": 1
                                                                        },
                                                                        {
                                                                            "declaration": 1062,
                                                                            "isOffset": false,
                                                                            "isSlot": false,
                                                                            "src": "6344:6:2",
                                                                            "valueSize": 1
                                                                        }
                                                                    ],
                                                                    "id": 1095,
                                                                    "nodeType": "InlineAssembly",
                                                                    "src": "6099:385:2"
                                                                }
                                                            ]
                                                        }
                                                    },
                                                    "id": 1113,
                                                    "nodeType": "IfStatement",
                                                    "src": "5969:942:2",
                                                    "trueBody": {
                                                        "expression": {
                                                            "id": 1090,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1084,
                                                                "name": "itemLen",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1068,
                                                                "src": "6000:7:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1089,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1087,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1085,
                                                                        "name": "byte0",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1071,
                                                                        "src": "6010:5:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "id": 1086,
                                                                        "name": "STRING_SHORT_START",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 596,
                                                                        "src": "6018:18:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "src": "6010:26:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "hexValue": "31",
                                                                    "id": 1088,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "6039:1:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                },
                                                                "src": "6010:30:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6000:40:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1091,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "6000:40:2"
                                                    }
                                                },
                                                "id": 1114,
                                                "nodeType": "IfStatement",
                                                "src": "5911:1000:2",
                                                "trueBody": {
                                                    "expression": {
                                                        "id": 1079,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 1077,
                                                            "name": "itemLen",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1068,
                                                            "src": "5943:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "hexValue": "31",
                                                            "id": 1078,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5953:1:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "src": "5943:11:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 1080,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "5943:11:2"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 1115,
                                                    "name": "itemLen",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1068,
                                                    "src": "6928:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1066,
                                                "id": 1116,
                                                "nodeType": "Return",
                                                "src": "6921:14:2"
                                            }
                                        ]
                                    },
                                    "id": 1118,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_itemLength",
                                    "nameLocation": "5720:11:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1063,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1062,
                                                "mutability": "mutable",
                                                "name": "memPtr",
                                                "nameLocation": "5740:6:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1118,
                                                "src": "5732:14:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1061,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5732:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5731:16:2"
                                    },
                                    "returnParameters": {
                                        "id": 1066,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1065,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1118,
                                                "src": "5770:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1064,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5770:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5769:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "5711:1231:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 1172,
                                        "nodeType": "Block",
                                        "src": "7065:450:2",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1126
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1126,
                                                        "mutability": "mutable",
                                                        "name": "byte0",
                                                        "nameLocation": "7083:5:2",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1172,
                                                        "src": "7075:13:2",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1125,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7075:7:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1127,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7075:13:2"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7107:55:2",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7121:31:2",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7135:1:2",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7144:6:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7138:5:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7138:13:2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "byte",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7130:4:2"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7130:22:2"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "byte0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7121:5:2"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 1126,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "7121:5:2",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 1120,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "7144:6:2",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 1128,
                                                "nodeType": "InlineAssembly",
                                                "src": "7098:64:2"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1131,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1129,
                                                        "name": "byte0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1126,
                                                        "src": "7176:5:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 1130,
                                                        "name": "STRING_SHORT_START",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 596,
                                                        "src": "7184:18:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "src": "7176:26:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 1145,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1136,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1134,
                                                                "name": "byte0",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1126,
                                                                "src": "7231:5:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "id": 1135,
                                                                "name": "STRING_LONG_START",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 599,
                                                                "src": "7239:17:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "src": "7231:25:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "||",
                                                        "rightExpression": {
                                                            "components": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "id": 1143,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1139,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1137,
                                                                            "name": "byte0",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1126,
                                                                            "src": "7261:5:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": ">=",
                                                                        "rightExpression": {
                                                                            "id": 1138,
                                                                            "name": "LIST_SHORT_START",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 602,
                                                                            "src": "7270:16:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "src": "7261:25:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "&&",
                                                                    "rightExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1142,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1140,
                                                                            "name": "byte0",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1126,
                                                                            "src": "7290:5:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "<",
                                                                        "rightExpression": {
                                                                            "id": 1141,
                                                                            "name": "LIST_LONG_START",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 605,
                                                                            "src": "7298:15:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "src": "7290:23:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "src": "7261:52:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1144,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "7260:54:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "7231:83:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseBody": {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1150,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1148,
                                                                "name": "byte0",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1126,
                                                                "src": "7343:5:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "id": 1149,
                                                                "name": "LIST_SHORT_START",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 602,
                                                                "src": "7351:16:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "src": "7343:24:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "falseBody": {
                                                            "expression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1167,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1165,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1160,
                                                                        "name": "byte0",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1126,
                                                                        "src": "7475:5:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "components": [
                                                                            {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                },
                                                                                "id": 1163,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "id": 1161,
                                                                                    "name": "LIST_LONG_START",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 605,
                                                                                    "src": "7484:15:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "-",
                                                                                "rightExpression": {
                                                                                    "hexValue": "31",
                                                                                    "id": 1162,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "7502:1:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    "value": "1"
                                                                                },
                                                                                "src": "7484:19:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "id": 1164,
                                                                        "isConstant": false,
                                                                        "isInlineArray": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "TupleExpression",
                                                                        "src": "7483:21:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "src": "7475:29:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "hexValue": "31",
                                                                    "id": 1166,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7507:1:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                },
                                                                "src": "7475:33:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1124,
                                                            "id": 1168,
                                                            "nodeType": "Return",
                                                            "src": "7468:40:2"
                                                        },
                                                        "id": 1169,
                                                        "nodeType": "IfStatement",
                                                        "src": "7339:169:2",
                                                        "trueBody": {
                                                            "expression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1158,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1156,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1151,
                                                                        "name": "byte0",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1126,
                                                                        "src": "7418:5:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "components": [
                                                                            {
                                                                                "commonType": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                },
                                                                                "id": 1154,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                    "id": 1152,
                                                                                    "name": "STRING_LONG_START",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 599,
                                                                                    "src": "7427:17:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "-",
                                                                                "rightExpression": {
                                                                                    "hexValue": "31",
                                                                                    "id": 1153,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "7447:1:2",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    "value": "1"
                                                                                },
                                                                                "src": "7427:21:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "id": 1155,
                                                                        "isConstant": false,
                                                                        "isInlineArray": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "TupleExpression",
                                                                        "src": "7426:23:2",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "src": "7418:31:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "hexValue": "31",
                                                                    "id": 1157,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7452:1:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                },
                                                                "src": "7418:35:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1124,
                                                            "id": 1159,
                                                            "nodeType": "Return",
                                                            "src": "7411:42:2"
                                                        }
                                                    },
                                                    "id": 1170,
                                                    "nodeType": "IfStatement",
                                                    "src": "7227:281:2",
                                                    "trueBody": {
                                                        "expression": {
                                                            "hexValue": "31",
                                                            "id": 1146,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7323:1:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "functionReturnParameters": 1124,
                                                        "id": 1147,
                                                        "nodeType": "Return",
                                                        "src": "7316:8:2"
                                                    }
                                                },
                                                "id": 1171,
                                                "nodeType": "IfStatement",
                                                "src": "7172:336:2",
                                                "trueBody": {
                                                    "expression": {
                                                        "hexValue": "30",
                                                        "id": 1132,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7211:1:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "functionReturnParameters": 1124,
                                                    "id": 1133,
                                                    "nodeType": "Return",
                                                    "src": "7204:8:2"
                                                }
                                            }
                                        ]
                                    },
                                    "id": 1173,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_payloadOffset",
                                    "nameLocation": "7003:14:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1121,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1120,
                                                "mutability": "mutable",
                                                "name": "memPtr",
                                                "nameLocation": "7026:6:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1173,
                                                "src": "7018:14:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1119,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7018:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7017:16:2"
                                    },
                                    "returnParameters": {
                                        "id": 1124,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1123,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1173,
                                                "src": "7056:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1122,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7056:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7055:9:2"
                                    },
                                    "scope": 1220,
                                    "src": "6994:521:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 1218,
                                        "nodeType": "Block",
                                        "src": "7770:698:2",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1184,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1182,
                                                        "name": "len",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1179,
                                                        "src": "7784:3:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1183,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7791:1:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7784:8:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1186,
                                                "nodeType": "IfStatement",
                                                "src": "7780:21:2",
                                                "trueBody": {
                                                    "functionReturnParameters": 1181,
                                                    "id": 1185,
                                                    "nodeType": "Return",
                                                    "src": "7794:7:2"
                                                }
                                            },
                                            {
                                                "body": {
                                                    "id": 1203,
                                                    "nodeType": "Block",
                                                    "src": "7901:151:2",
                                                    "statements": [
                                                        {
                                                            "AST": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7924:56:2",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dest",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7949:4:2"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "src",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7961:3:2"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7955:5:2"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "7955:10:2"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7942:6:2"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7942:24:2"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7942:24:2"
                                                                    }
                                                                ]
                                                            },
                                                            "evmVersion": "london",
                                                            "externalReferences": [
                                                                {
                                                                    "declaration": 1177,
                                                                    "isOffset": false,
                                                                    "isSlot": false,
                                                                    "src": "7949:4:2",
                                                                    "valueSize": 1
                                                                },
                                                                {
                                                                    "declaration": 1175,
                                                                    "isOffset": false,
                                                                    "isSlot": false,
                                                                    "src": "7961:3:2",
                                                                    "valueSize": 1
                                                                }
                                                            ],
                                                            "id": 1194,
                                                            "nodeType": "InlineAssembly",
                                                            "src": "7915:65:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1197,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1195,
                                                                    "name": "src",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1175,
                                                                    "src": "7994:3:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "+=",
                                                                "rightHandSide": {
                                                                    "id": 1196,
                                                                    "name": "WORD_SIZE",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 608,
                                                                    "src": "8001:9:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "src": "7994:16:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1198,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7994:16:2"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1201,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1199,
                                                                    "name": "dest",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1177,
                                                                    "src": "8024:4:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "+=",
                                                                "rightHandSide": {
                                                                    "id": 1200,
                                                                    "name": "WORD_SIZE",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 608,
                                                                    "src": "8032:9:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    }
                                                                },
                                                                "src": "8024:17:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1202,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "8024:17:2"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1189,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1187,
                                                        "name": "len",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1179,
                                                        "src": "7865:3:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "id": 1188,
                                                        "name": "WORD_SIZE",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 608,
                                                        "src": "7872:9:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "src": "7865:16:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1204,
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 1192,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 1190,
                                                            "name": "len",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1179,
                                                            "src": "7883:3:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "-=",
                                                        "rightHandSide": {
                                                            "id": 1191,
                                                            "name": "WORD_SIZE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 608,
                                                            "src": "7890:9:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "src": "7883:16:2",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 1193,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "7883:16:2"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "7858:194:2"
                                            },
                                            {
                                                "id": 1217,
                                                "nodeType": "UncheckedBlock",
                                                "src": "8062:400:2",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            1206
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1206,
                                                                "mutability": "mutable",
                                                                "name": "mask",
                                                                "nameLocation": "8178:4:2",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1217,
                                                                "src": "8170:12:2",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1205,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8170:7:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1215,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1214,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1212,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "hexValue": "323536",
                                                                    "id": 1207,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8185:3:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_256_by_1",
                                                                        "typeString": "int_const 256"
                                                                    },
                                                                    "value": "256"
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "**",
                                                                "rightExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1210,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1208,
                                                                                "name": "WORD_SIZE",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 608,
                                                                                "src": "8191:9:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint8",
                                                                                    "typeString": "uint8"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "-",
                                                                            "rightExpression": {
                                                                                "id": 1209,
                                                                                "name": "len",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1179,
                                                                                "src": "8203:3:2",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "8191:15:2",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1211,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "8190:17:2",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8185:22:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 1213,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "8210:1:2",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "8185:26:2",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "8170:41:2"
                                                    },
                                                    {
                                                        "AST": {
                                                            "nodeType": "YulBlock",
                                                            "src": "8234:218:2",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulVariableDeclaration",
                                                                    "src": "8252:41:2",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8277:3:2"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "8271:5:2"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "8271:10:2"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "mask",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8287:4:2"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "8283:3:2"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "8283:9:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8267:3:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8267:26:2"
                                                                    },
                                                                    "variables": [
                                                                        {
                                                                            "name": "srcpart",
                                                                            "nodeType": "YulTypedName",
                                                                            "src": "8256:7:2",
                                                                            "type": ""
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "nodeType": "YulVariableDeclaration",
                                                                    "src": "8326:38:2",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "dest",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8352:4:2"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "8346:5:2"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "8346:11:2"
                                                                            },
                                                                            {
                                                                                "name": "mask",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8359:4:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8342:3:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8342:22:2"
                                                                    },
                                                                    "variables": [
                                                                        {
                                                                            "name": "destpart",
                                                                            "nodeType": "YulTypedName",
                                                                            "src": "8330:8:2",
                                                                            "type": ""
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dest",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8410:4:2"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "destpart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8419:8:2"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcpart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8429:7:2"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "or",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "8416:2:2"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "8416:21:2"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8403:6:2"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8403:35:2"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "8403:35:2"
                                                                }
                                                            ]
                                                        },
                                                        "evmVersion": "london",
                                                        "externalReferences": [
                                                            {
                                                                "declaration": 1177,
                                                                "isOffset": false,
                                                                "isSlot": false,
                                                                "src": "8352:4:2",
                                                                "valueSize": 1
                                                            },
                                                            {
                                                                "declaration": 1177,
                                                                "isOffset": false,
                                                                "isSlot": false,
                                                                "src": "8410:4:2",
                                                                "valueSize": 1
                                                            },
                                                            {
                                                                "declaration": 1206,
                                                                "isOffset": false,
                                                                "isSlot": false,
                                                                "src": "8287:4:2",
                                                                "valueSize": 1
                                                            },
                                                            {
                                                                "declaration": 1206,
                                                                "isOffset": false,
                                                                "isSlot": false,
                                                                "src": "8359:4:2",
                                                                "valueSize": 1
                                                            },
                                                            {
                                                                "declaration": 1175,
                                                                "isOffset": false,
                                                                "isSlot": false,
                                                                "src": "8277:3:2",
                                                                "valueSize": 1
                                                            }
                                                        ],
                                                        "id": 1216,
                                                        "nodeType": "InlineAssembly",
                                                        "src": "8225:227:2"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "id": 1219,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "copy",
                                    "nameLocation": "7682:4:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1180,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1175,
                                                "mutability": "mutable",
                                                "name": "src",
                                                "nameLocation": "7704:3:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1219,
                                                "src": "7696:11:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1174,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7696:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1177,
                                                "mutability": "mutable",
                                                "name": "dest",
                                                "nameLocation": "7725:4:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1219,
                                                "src": "7717:12:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1176,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7717:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1179,
                                                "mutability": "mutable",
                                                "name": "len",
                                                "nameLocation": "7747:3:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1219,
                                                "src": "7739:11:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1178,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7739:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7686:70:2"
                                    },
                                    "returnParameters": {
                                        "id": 1181,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7770:0:2"
                                    },
                                    "scope": 1220,
                                    "src": "7673:795:2",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 1221,
                            "src": "565:7905:2",
                            "usedErrors": []
                        }
                    ],
                    "src": "540:7931:2"
                },
                "id": 2
            },
            "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol": {
                "ast": {
                    "absolutePath": "contracts/external/polygon/tunnel/FxBaseRootTunnel.sol",
                    "exportedSymbols": {
                        "FxBaseRootTunnel": [
                            1636
                        ],
                        "ICheckpointManager": [
                            1251
                        ],
                        "IFxStateSender": [
                            1233
                        ],
                        "Merkle": [
                            102
                        ],
                        "MerklePatriciaProof": [
                            591
                        ],
                        "RLPReader": [
                            1220
                        ]
                    },
                    "id": 1637,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1222,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "180:23:3"
                        },
                        {
                            "absolutePath": "contracts/external/polygon/lib/RLPReader.sol",
                            "file": "../lib/RLPReader.sol",
                            "id": 1223,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1637,
                            "sourceUnit": 1221,
                            "src": "205:30:3",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/polygon/lib/MerklePatriciaProof.sol",
                            "file": "../lib/MerklePatriciaProof.sol",
                            "id": 1224,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1637,
                            "sourceUnit": 592,
                            "src": "236:40:3",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/polygon/lib/Merkle.sol",
                            "file": "../lib/Merkle.sol",
                            "id": 1225,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1637,
                            "sourceUnit": 103,
                            "src": "277:27:3",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IFxStateSender",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 1233,
                            "linearizedBaseContracts": [
                                1233
                            ],
                            "name": "IFxStateSender",
                            "nameLocation": "316:14:3",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "b4720477",
                                    "id": 1232,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendMessageToChild",
                                    "nameLocation": "346:18:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1230,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1227,
                                                "mutability": "mutable",
                                                "name": "_receiver",
                                                "nameLocation": "373:9:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1232,
                                                "src": "365:17:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1226,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "365:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1229,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "399:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1232,
                                                "src": "384:20:3",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1228,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "384:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "364:41:3"
                                    },
                                    "returnParameters": {
                                        "id": 1231,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "414:0:3"
                                    },
                                    "scope": 1233,
                                    "src": "337:78:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 1637,
                            "src": "306:111:3",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "ICheckpointManager",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 1251,
                            "linearizedBaseContracts": [
                                1251
                            ],
                            "name": "ICheckpointManager",
                            "nameLocation": "428:18:3",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "ICheckpointManager.HeaderBlock",
                                    "id": 1244,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 1235,
                                            "mutability": "mutable",
                                            "name": "root",
                                            "nameLocation": "490:4:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1244,
                                            "src": "482:12:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 1234,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "482:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 1237,
                                            "mutability": "mutable",
                                            "name": "start",
                                            "nameLocation": "512:5:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1244,
                                            "src": "504:13:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1236,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "504:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 1239,
                                            "mutability": "mutable",
                                            "name": "end",
                                            "nameLocation": "535:3:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1244,
                                            "src": "527:11:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1238,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "527:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 1241,
                                            "mutability": "mutable",
                                            "name": "createdAt",
                                            "nameLocation": "556:9:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1244,
                                            "src": "548:17:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1240,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "548:7:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 1243,
                                            "mutability": "mutable",
                                            "name": "proposer",
                                            "nameLocation": "583:8:3",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1244,
                                            "src": "575:16:3",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1242,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "575:7:3",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "HeaderBlock",
                                    "nameLocation": "460:11:3",
                                    "nodeType": "StructDefinition",
                                    "scope": 1251,
                                    "src": "453:145:3",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "documentation": {
                                        "id": 1245,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "604:143:3",
                                        "text": " @notice mapping of checkpoint header numbers to block details\n @dev These checkpoints are submited by plasma contracts"
                                    },
                                    "functionSelector": "41539d4a",
                                    "id": 1250,
                                    "mutability": "mutable",
                                    "name": "headerBlocks",
                                    "nameLocation": "791:12:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1251,
                                    "src": "752:51:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_HeaderBlock_$1244_storage_$",
                                        "typeString": "mapping(uint256 => struct ICheckpointManager.HeaderBlock)"
                                    },
                                    "typeName": {
                                        "id": 1249,
                                        "keyType": {
                                            "id": 1246,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "760:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "752:31:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_HeaderBlock_$1244_storage_$",
                                            "typeString": "mapping(uint256 => struct ICheckpointManager.HeaderBlock)"
                                        },
                                        "valueType": {
                                            "id": 1248,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1247,
                                                "name": "HeaderBlock",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1244,
                                                "src": "771:11:3"
                                            },
                                            "referencedDeclaration": 1244,
                                            "src": "771:11:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_HeaderBlock_$1244_storage_ptr",
                                                "typeString": "struct ICheckpointManager.HeaderBlock"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                }
                            ],
                            "scope": 1637,
                            "src": "419:387:3",
                            "usedErrors": []
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "FxBaseRootTunnel",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": false,
                            "id": 1636,
                            "linearizedBaseContracts": [
                                1636
                            ],
                            "name": "FxBaseRootTunnel",
                            "nameLocation": "826:16:3",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 1254,
                                    "libraryName": {
                                        "id": 1252,
                                        "name": "RLPReader",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1220,
                                        "src": "855:9:3"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "849:26:3",
                                    "typeName": {
                                        "id": 1253,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "869:5:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    }
                                },
                                {
                                    "id": 1258,
                                    "libraryName": {
                                        "id": 1255,
                                        "name": "RLPReader",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1220,
                                        "src": "886:9:3"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "880:38:3",
                                    "typeName": {
                                        "id": 1257,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1256,
                                            "name": "RLPReader.RLPItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 613,
                                            "src": "900:17:3"
                                        },
                                        "referencedDeclaration": 613,
                                        "src": "900:17:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                            "typeString": "struct RLPReader.RLPItem"
                                        }
                                    }
                                },
                                {
                                    "id": 1261,
                                    "libraryName": {
                                        "id": 1259,
                                        "name": "Merkle",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 102,
                                        "src": "929:6:3"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "923:25:3",
                                    "typeName": {
                                        "id": 1260,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "940:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    }
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "0e387de6",
                                    "id": 1264,
                                    "mutability": "constant",
                                    "name": "SEND_MESSAGE_EVENT_SIG",
                                    "nameLocation": "1015:22:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1636,
                                    "src": "991:115:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1262,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "991:7:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307838633532363136363836393663653232373538393130643035626162386631383664366562323437636561633261663265383263376463313736363962303336",
                                        "id": 1263,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1040:66:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_63469352494453205371370597584683032582937416986488740256034378337537890037814_by_1",
                                            "typeString": "int_const 6346...(69 digits omitted)...7814"
                                        },
                                        "value": "0x8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "de9b771f",
                                    "id": 1267,
                                    "mutability": "mutable",
                                    "name": "fxRoot",
                                    "nameLocation": "1164:6:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1636,
                                    "src": "1142:28:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                        "typeString": "contract IFxStateSender"
                                    },
                                    "typeName": {
                                        "id": 1266,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1265,
                                            "name": "IFxStateSender",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1233,
                                            "src": "1142:14:3"
                                        },
                                        "referencedDeclaration": 1233,
                                        "src": "1142:14:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                            "typeString": "contract IFxStateSender"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c0857ba0",
                                    "id": 1270,
                                    "mutability": "mutable",
                                    "name": "checkpointManager",
                                    "nameLocation": "1228:17:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1636,
                                    "src": "1202:43:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                        "typeString": "contract ICheckpointManager"
                                    },
                                    "typeName": {
                                        "id": 1269,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1268,
                                            "name": "ICheckpointManager",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1251,
                                            "src": "1202:18:3"
                                        },
                                        "referencedDeclaration": 1251,
                                        "src": "1202:18:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                            "typeString": "contract ICheckpointManager"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "972c4928",
                                    "id": 1272,
                                    "mutability": "mutable",
                                    "name": "fxChildTunnel",
                                    "nameLocation": "1329:13:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1636,
                                    "src": "1314:28:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1271,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1314:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "607f2d42",
                                    "id": 1276,
                                    "mutability": "mutable",
                                    "name": "processedExits",
                                    "nameLocation": "1421:14:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1636,
                                    "src": "1389:46:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                        "typeString": "mapping(bytes32 => bool)"
                                    },
                                    "typeName": {
                                        "id": 1275,
                                        "keyType": {
                                            "id": 1273,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1397:7:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1389:24:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                            "typeString": "mapping(bytes32 => bool)"
                                        },
                                        "valueType": {
                                            "id": 1274,
                                            "name": "bool",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1408:4:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1295,
                                        "nodeType": "Block",
                                        "src": "1499:117:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 1287,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 1283,
                                                        "name": "checkpointManager",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1270,
                                                        "src": "1509:17:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                                            "typeString": "contract ICheckpointManager"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 1285,
                                                                "name": "_checkpointManager",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1278,
                                                                "src": "1548:18:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1284,
                                                            "name": "ICheckpointManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1251,
                                                            "src": "1529:18:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_ICheckpointManager_$1251_$",
                                                                "typeString": "type(contract ICheckpointManager)"
                                                            }
                                                        },
                                                        "id": 1286,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1529:38:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                                            "typeString": "contract ICheckpointManager"
                                                        }
                                                    },
                                                    "src": "1509:58:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                                        "typeString": "contract ICheckpointManager"
                                                    }
                                                },
                                                "id": 1288,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1509:58:3"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1293,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 1289,
                                                        "name": "fxRoot",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1267,
                                                        "src": "1577:6:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                                            "typeString": "contract IFxStateSender"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 1291,
                                                                "name": "_fxRoot",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1280,
                                                                "src": "1601:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1290,
                                                            "name": "IFxStateSender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1233,
                                                            "src": "1586:14:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IFxStateSender_$1233_$",
                                                                "typeString": "type(contract IFxStateSender)"
                                                            }
                                                        },
                                                        "id": 1292,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1586:23:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                                            "typeString": "contract IFxStateSender"
                                                        }
                                                    },
                                                    "src": "1577:32:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                                        "typeString": "contract IFxStateSender"
                                                    }
                                                },
                                                "id": 1294,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1577:32:3"
                                            }
                                        ]
                                    },
                                    "id": 1296,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1281,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1278,
                                                "mutability": "mutable",
                                                "name": "_checkpointManager",
                                                "nameLocation": "1462:18:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1296,
                                                "src": "1454:26:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1277,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1454:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1280,
                                                "mutability": "mutable",
                                                "name": "_fxRoot",
                                                "nameLocation": "1490:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1296,
                                                "src": "1482:15:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1279,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1482:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1453:45:3"
                                    },
                                    "returnParameters": {
                                        "id": 1282,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1499:0:3"
                                    },
                                    "scope": 1636,
                                    "src": "1442:174:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1315,
                                        "nodeType": "Block",
                                        "src": "1723:141:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1307,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1302,
                                                                "name": "fxChildTunnel",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1272,
                                                                "src": "1741:13:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "307830",
                                                                        "id": 1305,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1766:3:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0x0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1304,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "1758:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1303,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "1758:7:3",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1306,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1758:12:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "1741:29:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "467842617365526f6f7454756e6e656c3a204348494c445f54554e4e454c5f414c52454144595f534554",
                                                            "id": 1308,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1772:44:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1dc310af12cba7b1018a7df66f4a5d342cf94c76291e27400d58d59cb64eb899",
                                                                "typeString": "literal_string \"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\""
                                                            },
                                                            "value": "FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1dc310af12cba7b1018a7df66f4a5d342cf94c76291e27400d58d59cb64eb899",
                                                                "typeString": "literal_string \"FxBaseRootTunnel: CHILD_TUNNEL_ALREADY_SET\""
                                                            }
                                                        ],
                                                        "id": 1301,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1733:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1309,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1733:84:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1310,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1733:84:3"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 1311,
                                                        "name": "fxChildTunnel",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1272,
                                                        "src": "1827:13:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 1312,
                                                        "name": "_fxChildTunnel",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1298,
                                                        "src": "1843:14:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1827:30:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 1314,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1827:30:3"
                                            }
                                        ]
                                    },
                                    "functionSelector": "aea4e49e",
                                    "id": 1316,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setFxChildTunnel",
                                    "nameLocation": "1675:16:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1299,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1298,
                                                "mutability": "mutable",
                                                "name": "_fxChildTunnel",
                                                "nameLocation": "1700:14:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1316,
                                                "src": "1692:22:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1297,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1692:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1691:24:3"
                                    },
                                    "returnParameters": {
                                        "id": 1300,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1723:0:3"
                                    },
                                    "scope": 1636,
                                    "src": "1666:198:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1329,
                                        "nodeType": "Block",
                                        "src": "2219:66:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1325,
                                                            "name": "fxChildTunnel",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1272,
                                                            "src": "2255:13:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1326,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1319,
                                                            "src": "2270:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1322,
                                                            "name": "fxRoot",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1267,
                                                            "src": "2229:6:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IFxStateSender_$1233",
                                                                "typeString": "contract IFxStateSender"
                                                            }
                                                        },
                                                        "id": 1324,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sendMessageToChild",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1232,
                                                        "src": "2229:25:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 1327,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2229:49:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1328,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2229:49:3"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1317,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1870:284:3",
                                        "text": " @notice Send bytes message to Child Tunnel\n @param message bytes message that will be sent to Child Tunnel\n some message examples -\n   abi.encode(tokenId);\n   abi.encode(tokenId, tokenMetadata);\n   abi.encode(messageType, messageData);"
                                    },
                                    "id": 1330,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_sendMessageToChild",
                                    "nameLocation": "2168:19:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1319,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "2201:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1330,
                                                "src": "2188:20:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1318,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2188:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2187:22:3"
                                    },
                                    "returnParameters": {
                                        "id": 1321,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2219:0:3"
                                    },
                                    "scope": 1636,
                                    "src": "2159:126:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1560,
                                        "nodeType": "Block",
                                        "src": "2383:2856:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1342
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1342,
                                                        "mutability": "mutable",
                                                        "name": "inputDataRLPList",
                                                        "nameLocation": "2420:16:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "2393:43:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 1340,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 1339,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "2393:17:3"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "2393:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 1341,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "2393:19:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1348,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "id": 1343,
                                                                    "name": "inputData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1332,
                                                                    "src": "2439:9:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "id": 1344,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toRlpItem",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 640,
                                                                "src": "2439:19:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_RLPItem_$613_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes memory) pure returns (struct RLPReader.RLPItem memory)"
                                                                }
                                                            },
                                                            "id": 1345,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2439:21:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1346,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toList",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 739,
                                                        "src": "2439:28:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        }
                                                    },
                                                    "id": 1347,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2439:30:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2393:76:3"
                                            },
                                            {
                                                "assignments": [
                                                    1350
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1350,
                                                        "mutability": "mutable",
                                                        "name": "exitHash",
                                                        "nameLocation": "2637:8:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "2629:16:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 1349,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2629:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1374,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1354,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "2725:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1356,
                                                                            "indexExpression": {
                                                                                "hexValue": "32",
                                                                                "id": 1355,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "2742:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                    "typeString": "int_const 2"
                                                                                },
                                                                                "value": "2"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "2725:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1357,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toUint",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 899,
                                                                        "src": "2725:26:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1358,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2725:28:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [],
                                                                            "expression": {
                                                                                "argumentTypes": [],
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1361,
                                                                                        "name": "inputDataRLPList",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1342,
                                                                                        "src": "3101:16:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1363,
                                                                                    "indexExpression": {
                                                                                        "hexValue": "38",
                                                                                        "id": 1362,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "number",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "3118:1:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_rational_8_by_1",
                                                                                            "typeString": "int_const 8"
                                                                                        },
                                                                                        "value": "8"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "3101:19:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                                    }
                                                                                },
                                                                                "id": 1364,
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "toBytes",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 1004,
                                                                                "src": "3101:27:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                                }
                                                                            },
                                                                            "id": 1365,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "3101:29:3",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 1359,
                                                                            "name": "MerklePatriciaProof",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 591,
                                                                            "src": "3065:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_MerklePatriciaProof_$591_$",
                                                                                "typeString": "type(library MerklePatriciaProof)"
                                                                            }
                                                                        },
                                                                        "id": 1360,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "_getNibbleArray",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 550,
                                                                        "src": "3065:35:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function (bytes memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1366,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3065:66:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1367,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "3167:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1369,
                                                                            "indexExpression": {
                                                                                "hexValue": "39",
                                                                                "id": 1368,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "3184:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_9_by_1",
                                                                                    "typeString": "int_const 9"
                                                                                },
                                                                                "value": "9"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "3167:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1370,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toUint",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 899,
                                                                        "src": "3167:26:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1371,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3167:28:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1352,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "2687:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 1353,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodePacked",
                                                                "nodeType": "MemberAccess",
                                                                "src": "2687:16:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1372,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2687:545:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1351,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "2660:9:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 1373,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2660:586:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2629:617:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 1380,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 1376,
                                                                    "name": "processedExits",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1276,
                                                                    "src": "3264:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                                                        "typeString": "mapping(bytes32 => bool)"
                                                                    }
                                                                },
                                                                "id": 1378,
                                                                "indexExpression": {
                                                                    "id": 1377,
                                                                    "name": "exitHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1350,
                                                                    "src": "3279:8:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3264:24:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "66616c7365",
                                                                "id": 1379,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "bool",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3292:5:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "value": "false"
                                                            },
                                                            "src": "3264:33:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4678526f6f7454756e6e656c3a20455849545f414c52454144595f50524f434553534544",
                                                            "id": 1381,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3299:38:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_346ac4d916e6e0ff921470f98a98a708e34aa5c8a93b4076794f133e004e36a5",
                                                                "typeString": "literal_string \"FxRootTunnel: EXIT_ALREADY_PROCESSED\""
                                                            },
                                                            "value": "FxRootTunnel: EXIT_ALREADY_PROCESSED"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_346ac4d916e6e0ff921470f98a98a708e34aa5c8a93b4076794f133e004e36a5",
                                                                "typeString": "literal_string \"FxRootTunnel: EXIT_ALREADY_PROCESSED\""
                                                            }
                                                        ],
                                                        "id": 1375,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3256:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1382,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3256:82:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1383,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3256:82:3"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1388,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 1384,
                                                            "name": "processedExits",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1276,
                                                            "src": "3348:14:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                                                                "typeString": "mapping(bytes32 => bool)"
                                                            }
                                                        },
                                                        "id": 1386,
                                                        "indexExpression": {
                                                            "id": 1385,
                                                            "name": "exitHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1350,
                                                            "src": "3363:8:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3348:24:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 1387,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3375:4:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "3348:31:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1389,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3348:31:3"
                                            },
                                            {
                                                "assignments": [
                                                    1395
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1395,
                                                        "mutability": "mutable",
                                                        "name": "receiptRLPList",
                                                        "nameLocation": "3417:14:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "3390:41:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 1393,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 1392,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "3390:17:3"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "3390:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 1394,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "3390:19:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1405,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1396,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "3434:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1398,
                                                                            "indexExpression": {
                                                                                "hexValue": "36",
                                                                                "id": 1397,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "3451:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_6_by_1",
                                                                                    "typeString": "int_const 6"
                                                                                },
                                                                                "value": "6"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "3434:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1399,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toBytes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1004,
                                                                        "src": "3434:27:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1400,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3434:29:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "id": 1401,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toRlpItem",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 640,
                                                                "src": "3434:39:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_RLPItem_$613_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes memory) pure returns (struct RLPReader.RLPItem memory)"
                                                                }
                                                            },
                                                            "id": 1402,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3434:41:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1403,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toList",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 739,
                                                        "src": "3434:48:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        }
                                                    },
                                                    "id": 1404,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3434:50:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3390:94:3"
                                            },
                                            {
                                                "assignments": [
                                                    1410
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1410,
                                                        "mutability": "mutable",
                                                        "name": "logRLP",
                                                        "nameLocation": "3519:6:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "3494:31:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem"
                                                        },
                                                        "typeName": {
                                                            "id": 1409,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 1408,
                                                                "name": "RLPReader.RLPItem",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 613,
                                                                "src": "3494:17:3"
                                                            },
                                                            "referencedDeclaration": 613,
                                                            "src": "3494:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1422,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1411,
                                                                    "name": "receiptRLPList",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1395,
                                                                    "src": "3540:14:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                    }
                                                                },
                                                                "id": 1413,
                                                                "indexExpression": {
                                                                    "hexValue": "33",
                                                                    "id": 1412,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "3555:1:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_3_by_1",
                                                                        "typeString": "int_const 3"
                                                                    },
                                                                    "value": "3"
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3540:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 1414,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "toList",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 739,
                                                            "src": "3540:24:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                            }
                                                        },
                                                        "id": 1415,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3540:26:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                        }
                                                    },
                                                    "id": 1421,
                                                    "indexExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1416,
                                                                    "name": "inputDataRLPList",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1342,
                                                                    "src": "3584:16:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                    }
                                                                },
                                                                "id": 1418,
                                                                "indexExpression": {
                                                                    "hexValue": "39",
                                                                    "id": 1417,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "3601:1:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_9_by_1",
                                                                        "typeString": "int_const 9"
                                                                    },
                                                                    "value": "9"
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3584:19:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                }
                                                            },
                                                            "id": 1419,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "toUint",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 899,
                                                            "src": "3584:26:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                            }
                                                        },
                                                        "id": 1420,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3584:28:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3540:105:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3494:151:3"
                                            },
                                            {
                                                "assignments": [
                                                    1428
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1428,
                                                        "mutability": "mutable",
                                                        "name": "logRLPList",
                                                        "nameLocation": "3683:10:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "3656:37:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 1426,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 1425,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "3656:17:3"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "3656:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 1427,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "3656:19:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1432,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "id": 1429,
                                                            "name": "logRLP",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1410,
                                                            "src": "3696:6:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1430,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toList",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 739,
                                                        "src": "3696:13:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        }
                                                    },
                                                    "id": 1431,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3696:15:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3656:55:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1441,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1434,
                                                                "name": "fxChildTunnel",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1272,
                                                                "src": "3760:13:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 1437,
                                                                            "name": "logRLPList",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1428,
                                                                            "src": "3797:10:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                            }
                                                                        },
                                                                        "id": 1439,
                                                                        "indexExpression": {
                                                                            "hexValue": "30",
                                                                            "id": 1438,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "3808:1:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3797:13:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 1435,
                                                                        "name": "RLPReader",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1220,
                                                                        "src": "3777:9:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_RLPReader_$1220_$",
                                                                            "typeString": "type(library RLPReader)"
                                                                        }
                                                                    },
                                                                    "id": 1436,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "toAddress",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 832,
                                                                    "src": "3777:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_address_$",
                                                                        "typeString": "function (struct RLPReader.RLPItem memory) pure returns (address)"
                                                                    }
                                                                },
                                                                "id": 1440,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3777:34:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3760:51:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4678526f6f7454756e6e656c3a20494e56414c49445f46585f4348494c445f54554e4e454c",
                                                            "id": 1442,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3813:39:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_e20402930bc2a62dcad7f5124f56dbfe0c166bf9b0c73c01cd54b14a41c30523",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\""
                                                            },
                                                            "value": "FxRootTunnel: INVALID_FX_CHILD_TUNNEL"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_e20402930bc2a62dcad7f5124f56dbfe0c166bf9b0c73c01cd54b14a41c30523",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_FX_CHILD_TUNNEL\""
                                                            }
                                                        ],
                                                        "id": 1433,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3752:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1443,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3752:101:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1444,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3752:101:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1448,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "3965:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1450,
                                                                            "indexExpression": {
                                                                                "hexValue": "36",
                                                                                "id": 1449,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "3982:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_6_by_1",
                                                                                    "typeString": "int_const 6"
                                                                                },
                                                                                "value": "6"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "3965:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1451,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toBytes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1004,
                                                                        "src": "3965:27:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1452,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3965:29:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1453,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "4023:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1455,
                                                                            "indexExpression": {
                                                                                "hexValue": "38",
                                                                                "id": 1454,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4040:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_8_by_1",
                                                                                    "typeString": "int_const 8"
                                                                                },
                                                                                "value": "8"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4023:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1456,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toBytes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1004,
                                                                        "src": "4023:27:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1457,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4023:29:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1458,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "4084:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1460,
                                                                            "indexExpression": {
                                                                                "hexValue": "37",
                                                                                "id": 1459,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4101:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_7_by_1",
                                                                                    "typeString": "int_const 7"
                                                                                },
                                                                                "value": "7"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4084:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1461,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toBytes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1004,
                                                                        "src": "4084:27:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1462,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4084:29:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [],
                                                                            "expression": {
                                                                                "argumentTypes": [],
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1465,
                                                                                        "name": "inputDataRLPList",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1342,
                                                                                        "src": "4155:16:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1467,
                                                                                    "indexExpression": {
                                                                                        "hexValue": "35",
                                                                                        "id": 1466,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "number",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "4172:1:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_rational_5_by_1",
                                                                                            "typeString": "int_const 5"
                                                                                        },
                                                                                        "value": "5"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "4155:19:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                                    }
                                                                                },
                                                                                "id": 1468,
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "toUint",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 899,
                                                                                "src": "4155:26:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                                }
                                                                            },
                                                                            "id": 1469,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4155:28:3",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 1464,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "4147:7:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                                                            "typeString": "type(bytes32)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1463,
                                                                            "name": "bytes32",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4147:7:3",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 1470,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4147:37:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1446,
                                                                    "name": "MerklePatriciaProof",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 591,
                                                                    "src": "3921:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_MerklePatriciaProof_$591_$",
                                                                        "typeString": "type(library MerklePatriciaProof)"
                                                                    }
                                                                },
                                                                "id": 1447,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "verify",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 356,
                                                                "src": "3921:26:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bool_$",
                                                                    "typeString": "function (bytes memory,bytes memory,bytes memory,bytes32) pure returns (bool)"
                                                                }
                                                            },
                                                            "id": 1471,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3921:292:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4678526f6f7454756e6e656c3a20494e56414c49445f524543454950545f50524f4f46",
                                                            "id": 1472,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4227:37:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2ce2fedc24e79d64f58937c7672062618900d7fda5b396849b04c1ef7692f676",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_RECEIPT_PROOF\""
                                                            },
                                                            "value": "FxRootTunnel: INVALID_RECEIPT_PROOF"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2ce2fedc24e79d64f58937c7672062618900d7fda5b396849b04c1ef7692f676",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_RECEIPT_PROOF\""
                                                            }
                                                        ],
                                                        "id": 1445,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3900:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1473,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3900:374:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1474,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3900:374:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1476,
                                                                        "name": "inputDataRLPList",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1342,
                                                                        "src": "4371:16:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 1478,
                                                                    "indexExpression": {
                                                                        "hexValue": "32",
                                                                        "id": 1477,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4388:1:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_2_by_1",
                                                                            "typeString": "int_const 2"
                                                                        },
                                                                        "value": "2"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4371:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 1479,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toUint",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 899,
                                                                "src": "4371:26:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 1480,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4371:28:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1481,
                                                                        "name": "inputDataRLPList",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1342,
                                                                        "src": "4428:16:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 1483,
                                                                    "indexExpression": {
                                                                        "hexValue": "33",
                                                                        "id": 1482,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4445:1:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_3_by_1",
                                                                            "typeString": "int_const 3"
                                                                        },
                                                                        "value": "3"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4428:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 1484,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toUint",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 899,
                                                                "src": "4428:26:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 1485,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4428:28:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1488,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "4491:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1490,
                                                                            "indexExpression": {
                                                                                "hexValue": "34",
                                                                                "id": 1489,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4508:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_4_by_1",
                                                                                    "typeString": "int_const 4"
                                                                                },
                                                                                "value": "4"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4491:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1491,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toUint",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 899,
                                                                        "src": "4491:26:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1492,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4491:28:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1487,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "4483:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                                                    "typeString": "type(bytes32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1486,
                                                                    "name": "bytes32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "4483:7:3",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1493,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4483:37:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1496,
                                                                                "name": "inputDataRLPList",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1342,
                                                                                "src": "4552:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                }
                                                                            },
                                                                            "id": 1498,
                                                                            "indexExpression": {
                                                                                "hexValue": "35",
                                                                                "id": 1497,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "4569:1:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_5_by_1",
                                                                                    "typeString": "int_const 5"
                                                                                },
                                                                                "value": "5"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "4552:19:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                                            }
                                                                        },
                                                                        "id": 1499,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "toUint",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 899,
                                                                        "src": "4552:26:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1500,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4552:28:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1495,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "4544:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                                                    "typeString": "type(bytes32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1494,
                                                                    "name": "bytes32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "4544:7:3",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1501,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4544:37:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1502,
                                                                        "name": "inputDataRLPList",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1342,
                                                                        "src": "4610:16:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 1504,
                                                                    "indexExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 1503,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4627:1:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4610:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 1505,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toUint",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 899,
                                                                "src": "4610:26:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 1506,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4610:28:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1507,
                                                                        "name": "inputDataRLPList",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1342,
                                                                        "src": "4668:16:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 1509,
                                                                    "indexExpression": {
                                                                        "hexValue": "31",
                                                                        "id": 1508,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4685:1:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                            "typeString": "int_const 1"
                                                                        },
                                                                        "value": "1"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4668:19:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                        "typeString": "struct RLPReader.RLPItem memory"
                                                                    }
                                                                },
                                                                "id": 1510,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "toBytes",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1004,
                                                                "src": "4668:27:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                    "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1511,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4668:29:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1475,
                                                        "name": "_checkBlockMembershipInCheckpoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1612,
                                                        "src": "4324:33:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256,bytes32,bytes32,uint256,bytes memory) view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4324:397:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1513,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4324:397:3"
                                            },
                                            {
                                                "assignments": [
                                                    1519
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1519,
                                                        "mutability": "mutable",
                                                        "name": "logTopicRLPList",
                                                        "nameLocation": "4759:15:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "4732:42:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "struct RLPReader.RLPItem[]"
                                                        },
                                                        "typeName": {
                                                            "baseType": {
                                                                "id": 1517,
                                                                "nodeType": "UserDefinedTypeName",
                                                                "pathNode": {
                                                                    "id": 1516,
                                                                    "name": "RLPReader.RLPItem",
                                                                    "nodeType": "IdentifierPath",
                                                                    "referencedDeclaration": 613,
                                                                    "src": "4732:17:3"
                                                                },
                                                                "referencedDeclaration": 613,
                                                                "src": "4732:17:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_storage_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem"
                                                                }
                                                            },
                                                            "id": 1518,
                                                            "nodeType": "ArrayTypeName",
                                                            "src": "4732:19:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_storage_$dyn_storage_ptr",
                                                                "typeString": "struct RLPReader.RLPItem[]"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1525,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 1520,
                                                                "name": "logRLPList",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1428,
                                                                "src": "4777:10:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                }
                                                            },
                                                            "id": 1522,
                                                            "indexExpression": {
                                                                "hexValue": "31",
                                                                "id": 1521,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4788:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4777:13:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1523,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toList",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 739,
                                                        "src": "4777:20:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (struct RLPReader.RLPItem memory[] memory)"
                                                        }
                                                    },
                                                    "id": 1524,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4777:22:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4732:67:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            "id": 1536,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "expression": {
                                                                                "baseExpression": {
                                                                                    "id": 1529,
                                                                                    "name": "logTopicRLPList",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1519,
                                                                                    "src": "4849:15:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                                        "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                                    }
                                                                                },
                                                                                "id": 1531,
                                                                                "indexExpression": {
                                                                                    "hexValue": "30",
                                                                                    "id": 1530,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4865:1:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "4849:18:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                                    "typeString": "struct RLPReader.RLPItem memory"
                                                                                }
                                                                            },
                                                                            "id": 1532,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "toUint",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 899,
                                                                            "src": "4849:25:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                                                "typeString": "function (struct RLPReader.RLPItem memory) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1533,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "4849:27:3",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1528,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4841:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                                                        "typeString": "type(bytes32)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1527,
                                                                        "name": "bytes32",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4841:7:3",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1534,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4841:36:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 1535,
                                                                "name": "SEND_MESSAGE_EVENT_SIG",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1264,
                                                                "src": "4881:22:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "src": "4841:62:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4678526f6f7454756e6e656c3a20494e56414c49445f5349474e4154555245",
                                                            "id": 1537,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4940:33:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_bb7a552d748e26b221e0250d9c5275afe2a0161f67e052c27f605992e65ad73d",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_SIGNATURE\""
                                                            },
                                                            "value": "FxRootTunnel: INVALID_SIGNATURE"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_bb7a552d748e26b221e0250d9c5275afe2a0161f67e052c27f605992e65ad73d",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_SIGNATURE\""
                                                            }
                                                        ],
                                                        "id": 1526,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4820:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1538,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4820:163:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1539,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4820:163:3"
                                            },
                                            {
                                                "assignments": [
                                                    1541
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1541,
                                                        "mutability": "mutable",
                                                        "name": "receivedData",
                                                        "nameLocation": "5040:12:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "5027:25:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1540,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5027:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1547,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 1542,
                                                                "name": "logRLPList",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1428,
                                                                "src": "5055:10:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_RLPItem_$613_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct RLPReader.RLPItem memory[] memory"
                                                                }
                                                            },
                                                            "id": 1544,
                                                            "indexExpression": {
                                                                "hexValue": "32",
                                                                "id": 1543,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "5066:1:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                    "typeString": "int_const 2"
                                                                },
                                                                "value": "2"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5055:13:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RLPItem_$613_memory_ptr",
                                                                "typeString": "struct RLPReader.RLPItem memory"
                                                            }
                                                        },
                                                        "id": 1545,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "toBytes",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1004,
                                                        "src": "5055:21:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_RLPItem_$613_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RLPItem_$613_memory_ptr_$",
                                                            "typeString": "function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1546,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5055:23:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5027:51:3"
                                            },
                                            {
                                                "assignments": [
                                                    1549
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1549,
                                                        "mutability": "mutable",
                                                        "name": "message",
                                                        "nameLocation": "5101:7:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1560,
                                                        "src": "5088:20:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1548,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5088:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1557,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1552,
                                                            "name": "receivedData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1541,
                                                            "src": "5122:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "components": [
                                                                {
                                                                    "id": 1554,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "5137:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                        "typeString": "type(bytes storage pointer)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1553,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "5137:5:3",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1555,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "5136:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                "typeString": "type(bytes storage pointer)"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                "typeString": "type(bytes storage pointer)"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1550,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "5111:3:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1551,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "decode",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5111:10:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                                            "typeString": "function () pure"
                                                        }
                                                    },
                                                    "id": 1556,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5111:33:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5088:56:3"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1558,
                                                    "name": "message",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1549,
                                                    "src": "5225:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1336,
                                                "id": 1559,
                                                "nodeType": "Return",
                                                "src": "5218:14:3"
                                            }
                                        ]
                                    },
                                    "id": 1561,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_validateAndExtractMessage",
                                    "nameLocation": "2300:26:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1333,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1332,
                                                "mutability": "mutable",
                                                "name": "inputData",
                                                "nameLocation": "2340:9:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1561,
                                                "src": "2327:22:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1331,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2327:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2326:24:3"
                                    },
                                    "returnParameters": {
                                        "id": 1336,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1335,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1561,
                                                "src": "2369:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1334,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2369:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2368:14:3"
                                    },
                                    "scope": 1636,
                                    "src": "2291:2948:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1611,
                                        "nodeType": "Block",
                                        "src": "5497:439:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1579,
                                                    1581,
                                                    null,
                                                    1583,
                                                    null
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1579,
                                                        "mutability": "mutable",
                                                        "name": "headerRoot",
                                                        "nameLocation": "5516:10:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1611,
                                                        "src": "5508:18:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 1578,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5508:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1581,
                                                        "mutability": "mutable",
                                                        "name": "startBlock",
                                                        "nameLocation": "5536:10:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1611,
                                                        "src": "5528:18:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1580,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5528:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null,
                                                    {
                                                        "constant": false,
                                                        "id": 1583,
                                                        "mutability": "mutable",
                                                        "name": "createdAt",
                                                        "nameLocation": "5558:9:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1611,
                                                        "src": "5550:17:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1582,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5550:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null
                                                ],
                                                "id": 1588,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1586,
                                                            "name": "headerNumber",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1571,
                                                            "src": "5604:12:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1584,
                                                            "name": "checkpointManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1270,
                                                            "src": "5573:17:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ICheckpointManager_$1251",
                                                                "typeString": "contract ICheckpointManager"
                                                            }
                                                        },
                                                        "id": 1585,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "headerBlocks",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1250,
                                                        "src": "5573:30:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$",
                                                            "typeString": "function (uint256) view external returns (bytes32,uint256,uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 1587,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5573:44:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$",
                                                        "typeString": "tuple(bytes32,uint256,uint256,uint256,address)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5507:110:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1602,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1600,
                                                                        "name": "blockNumber",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1563,
                                                                        "src": "5755:11:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "id": 1601,
                                                                        "name": "startBlock",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1581,
                                                                        "src": "5769:10:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "5755:24:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1603,
                                                                    "name": "headerRoot",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1579,
                                                                    "src": "5797:10:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1604,
                                                                    "name": "blockProof",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1573,
                                                                    "src": "5825:10:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1593,
                                                                                    "name": "blockNumber",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1563,
                                                                                    "src": "5676:11:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1594,
                                                                                    "name": "blockTime",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1565,
                                                                                    "src": "5689:9:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1595,
                                                                                    "name": "txRoot",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1567,
                                                                                    "src": "5700:6:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1596,
                                                                                    "name": "receiptRoot",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1569,
                                                                                    "src": "5708:11:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "id": 1591,
                                                                                    "name": "abi",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": -1,
                                                                                    "src": "5659:3:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_magic_abi",
                                                                                        "typeString": "abi"
                                                                                    }
                                                                                },
                                                                                "id": 1592,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "memberName": "encodePacked",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "5659:16:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                                }
                                                                            },
                                                                            "id": 1597,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5659:61:3",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                "typeString": "bytes memory"
                                                                            }
                                                                        ],
                                                                        "id": 1590,
                                                                        "name": "keccak256",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -8,
                                                                        "src": "5649:9:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                                        }
                                                                    },
                                                                    "id": 1598,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5649:72:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "id": 1599,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "checkMembership",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 101,
                                                                "src": "5649:88:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes32_$",
                                                                    "typeString": "function (bytes32,uint256,bytes32,bytes memory) pure returns (bool)"
                                                                }
                                                            },
                                                            "id": 1605,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5649:200:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4678526f6f7454756e6e656c3a20494e56414c49445f484541444552",
                                                            "id": 1606,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5863:30:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ad52eb458dc59be89b09f31cb50841858fb84683b2cb7a41fdcd5c7d6e7430d9",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_HEADER\""
                                                            },
                                                            "value": "FxRootTunnel: INVALID_HEADER"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ad52eb458dc59be89b09f31cb50841858fb84683b2cb7a41fdcd5c7d6e7430d9",
                                                                "typeString": "literal_string \"FxRootTunnel: INVALID_HEADER\""
                                                            }
                                                        ],
                                                        "id": 1589,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5628:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1607,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5628:275:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1608,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5628:275:3"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1609,
                                                    "name": "createdAt",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1583,
                                                    "src": "5920:9:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1577,
                                                "id": 1610,
                                                "nodeType": "Return",
                                                "src": "5913:16:3"
                                            }
                                        ]
                                    },
                                    "id": 1612,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_checkBlockMembershipInCheckpoint",
                                    "nameLocation": "5254:33:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1574,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1563,
                                                "mutability": "mutable",
                                                "name": "blockNumber",
                                                "nameLocation": "5305:11:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5297:19:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1562,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5297:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1565,
                                                "mutability": "mutable",
                                                "name": "blockTime",
                                                "nameLocation": "5334:9:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5326:17:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1564,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5326:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1567,
                                                "mutability": "mutable",
                                                "name": "txRoot",
                                                "nameLocation": "5361:6:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5353:14:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1566,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5353:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1569,
                                                "mutability": "mutable",
                                                "name": "receiptRoot",
                                                "nameLocation": "5385:11:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5377:19:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1568,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5377:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1571,
                                                "mutability": "mutable",
                                                "name": "headerNumber",
                                                "nameLocation": "5414:12:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5406:20:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1570,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5406:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1573,
                                                "mutability": "mutable",
                                                "name": "blockProof",
                                                "nameLocation": "5449:10:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5436:23:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1572,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5436:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5287:178:3"
                                    },
                                    "returnParameters": {
                                        "id": 1577,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1576,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1612,
                                                "src": "5488:7:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1575,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5488:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5487:9:3"
                                    },
                                    "scope": 1636,
                                    "src": "5245:691:3",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 1628,
                                        "nodeType": "Block",
                                        "src": "6970:120:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1619
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1619,
                                                        "mutability": "mutable",
                                                        "name": "message",
                                                        "nameLocation": "6993:7:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1628,
                                                        "src": "6980:20:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1618,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6980:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1623,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1621,
                                                            "name": "inputData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1615,
                                                            "src": "7030:9:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1620,
                                                        "name": "_validateAndExtractMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1561,
                                                        "src": "7003:26:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1622,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7003:37:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6980:60:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1625,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1619,
                                                            "src": "7075:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1624,
                                                        "name": "_processMessageFromChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1635,
                                                        "src": "7050:24:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1626,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7050:33:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1627,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7050:33:3"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1613,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5942:960:3",
                                        "text": " @notice receive message from  L2 to L1, validated by proof\n @dev This function verifies if the transaction actually happened on child chain\n @param inputData RLP encoded data of the reference tx containing following list of fields\n  0 - headerNumber - Checkpoint header block number containing the reference tx\n  1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root\n  2 - blockNumber - Block number containing the reference tx on child chain\n  3 - blockTime - Reference tx block time\n  4 - txRoot - Transactions root of block\n  5 - receiptRoot - Receipts root of block\n  6 - receipt - Receipt of the reference transaction\n  7 - receiptProof - Merkle proof of the reference receipt\n  8 - branchMask - 32 bits denoting the path of receipt in merkle tree\n  9 - receiptLogIndex - Log Index to read from the receipt"
                                    },
                                    "functionSelector": "f953cec7",
                                    "id": 1629,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "receiveMessage",
                                    "nameLocation": "6916:14:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1616,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1615,
                                                "mutability": "mutable",
                                                "name": "inputData",
                                                "nameLocation": "6944:9:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1629,
                                                "src": "6931:22:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1614,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6931:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6930:24:3"
                                    },
                                    "returnParameters": {
                                        "id": 1617,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6970:0:3"
                                    },
                                    "scope": 1636,
                                    "src": "6907:183:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 1630,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7096:366:3",
                                        "text": " @notice Process message received from Child Tunnel\n @dev function needs to be implemented to handle message as per requirement\n This is called by onStateReceive function.\n Since it is called via a system call, any event will not be emitted during its execution.\n @param message bytes message that was sent from Child Tunnel"
                                    },
                                    "id": 1635,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_processMessageFromChild",
                                    "nameLocation": "7476:24:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1633,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1632,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "7514:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1635,
                                                "src": "7501:20:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1631,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7501:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7500:22:3"
                                    },
                                    "returnParameters": {
                                        "id": 1634,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7539:0:3"
                                    },
                                    "scope": 1636,
                                    "src": "7467:73:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1637,
                            "src": "808:6734:3",
                            "usedErrors": []
                        }
                    ],
                    "src": "180:7363:3"
                },
                "id": 3
            }
        }
    }
}
